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 및 코드의 파일에 레코드가 2개 이상 있고 end_date 값이 null이고 end_date가 null인 경우 end_date가 null인 레코드만 기록됩니다.
  2. 고객 ID 및 코드에 대한 레코드가 2개 이상 있고 첫 번째 레코드의 start_date, end_date, start_date가 end_date와 동일한 경우 null end_date 또는 오늘 날짜보다 이후 날짜만 기록됩니다.
  3. 고객 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

관련 정보