INPUT FILE: has all these values without header:
customer ID, code, start_date, end_date
124343, DCW, 2015-07-06, 2016-08-03
235432, ABC, 2015-04-26, NULL
235432, ABC, 2015-04-26, 2015-06-20
3242342, ABC, 2015-08-02, 2015-07-28
2332434, DCW, 2015-02-09, 2015-06-23
2332434, DCW, 2015-06-23, NULL
- 顧客IDとコード内のファイルに複数のレコードがあり、end_date値がnullでend_dateがnullの場合、end_dateがnullのレコードのみが記録されます。
- 顧客IDとコードの2つ以上のレコードがあり、最初のレコードのstart_date、end_date、start_dateがend_dateと等しい場合、null end_dateまたは今日の日付より後の日付のみが記録されます。
- 顧客IDとコードのファイルに2つ以上のレコードがあり、開始日が2つある場合は、最大日付値のみが考慮されます。必須出力には、顧客IDとコードレコードのみが必要です。
customer ID, code, start_date, end_date 124343, DCW, 2015-07-06, 2016-08-03 235432, ABC, 2015-04-26, null 3242342, ABC, 2015-08-02, 2015-07-28 2332434, DCW, 2015-06-23, null
ベストアンサー1
awk '
{
if($1$2==cust){
if(startdate<$3){
custline=$0
startdate=$3
enddate=$4
next
}
if(startdate==$3 && enddate<$4){
custline=$0
startdate=$3
enddate=$4
next
}
}else{
if(custline!=""){ print custline }
custline=$0
cust=$1$2
startdate=$3
enddate=$4
next
}
}END{print custline}' inputfile
前提:1. 2つ以上の「コード」を持っており、これらのコードを別々のアイテムとして扱いたい顧客がいる可能性があります。 2. 日付形式は例のように維持されます: YYYY-MM-DD