如何使用 if 条件删除同一文件中的重复项?

如何使用 if 条件删除同一文件中的重复项?

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

  1. 当客户 ID 和代码在文件中具有超过 1 条记录且 end_date 值为 null 且 end_date 为 null 时,则仅记录 end_date 为 null 的记录。
  2. 当客户 ID 和代码有超过 1 个记录时,第一个记录的 start_date、end_date 和 start_date 等于 end_date,则仅记录 null end_date 或比今天日期更远的日期。
  3. 当客户 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

相关内容