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 和代码在文件中具有超过 1 条记录且 end_date 值为 null 且 end_date 为 null 时,则仅记录 end_date 为 null 的记录。
- 当客户 ID 和代码有超过 1 个记录时,第一个记录的 start_date、end_date 和 start_date 等于 end_date,则仅记录 null end_date 或比今天日期更远的日期。
- 当客户 ID 和代码在文件中有超过 1 条记录且具有两个开始日期时,则仅考虑最大日期值。所需输出 只需要一条客户 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