첫 번째 열의 각 값에 대해 하나의 레코드를 가져오고 싶습니다. 아래 세 레코드의 최신 날짜 값은 2019-10-20입니다. 이 경우 먼저 세 개의 행을 가져온 다음 마지막 열의 최신 날짜인 2019-를 가져옵니다. 10-14 그래서 우리는 그 레코드를 출력으로 얻습니다.
입력하다:
150098517|000000601706|2019-10-19|2019-10-10|1265457733|2019-01-13
150098517|000000635671|2019-10-20|2019-10-20|1265457733|2019-01-13
150098517|000000637002|2019-10-20|2019-10-19|1265457733|2019-01-14
150098517|000000645047|2019-10-20|2019-10-18|1265457733|2019-01-12
150096747|000000645048|2019-10-17|2019-10-17|1265457733|2019-01-13
150098555|000000645194|2019-10-18|2019-10-16|1265457733|2019-01-13
150098554|000000645194|2019-10-18|2019-10-16|1265457733|2019-01-13
150098523|000000645194|2019-10-18|2019-10-16|1265457733|2019-01-13
150098523|000000645194|2019-10-14|2019-10-16|1265457733|2019-01-13
산출:
150098517|000000637002|2019-10-20|2019-10-19|1265457733|2019-01-14
150096747|000000645048|2019-10-17|2019-10-17|1265457733|2019-01-13
150098555|000000645194|2019-10-18|2019-10-16|1265457733|2019-01-13
150098554|000000645194|2019-10-18|2019-10-16|1265457733|2019-01-13
150098523|000000645194|2019-10-18|2019-10-16|1265457733|2019-01-13
고마워요, 아흐메드
답변1
데이터가 다음 파일에 있다고 가정합니다 file
.
$ sort -t '|' -k3,3r -k6,6r file | sort -t '|' -u -k1,1
150096747|000000645048|2019-10-17|2019-10-17|1265457733|2019-01-13
150098517|000000637002|2019-10-20|2019-10-19|1265457733|2019-01-14
150098523|000000645194|2019-10-18|2019-10-16|1265457733|2019-01-13
150098554|000000645194|2019-10-18|2019-10-16|1265457733|2019-01-13
150098555|000000645194|2019-10-18|2019-10-16|1265457733|2019-01-13
세 번째로 구분된 필드의 데이터를 역순으로 정렬하는 것부터 시작합니다 |
(가장 최근 날짜부터). 날짜가 동일한 경우 6번째 필드가 정렬에 사용됩니다.
첫 번째 호출의 중간 결과는 sort
다음과 같습니다.
150098517|000000637002|2019-10-20|2019-10-19|1265457733|2019-01-14
150098517|000000635671|2019-10-20|2019-10-20|1265457733|2019-01-13
150098517|000000645047|2019-10-20|2019-10-18|1265457733|2019-01-12
150098517|000000601706|2019-10-19|2019-10-10|1265457733|2019-01-13
150098523|000000645194|2019-10-18|2019-10-16|1265457733|2019-01-13
150098554|000000645194|2019-10-18|2019-10-16|1265457733|2019-01-13
150098555|000000645194|2019-10-18|2019-10-16|1265457733|2019-01-13
150096747|000000645048|2019-10-17|2019-10-17|1265457733|2019-01-13
150098523|000000645194|2019-10-14|2019-10-16|1265457733|2019-01-13
그런 다음 결과는 첫 번째 필드에서 정렬되고 첫 번째 필드에서 중복된 행은 제거됩니다. 두 번째 정렬로 들어가는 데이터는 세 번째 및 여섯 번째 필드의 날짜를 기준으로 정렬되므로 중복으로 삭제된 행의 날짜는 더 빨라집니다.