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 및 코드의 파일에 레코드가 2개 이상 있고 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