중복된 파일이 있는 경우 파일을 정렬하고 최신 레코드를 출력하려면 어떻게 해야 합니까?

중복된 파일이 있는 경우 파일을 정렬하고 최신 레코드를 출력하려면 어떻게 해야 합니까?

API를 통해 받은 모든 요청을 파일에 저장합니다. 중복 요청이 도착하면 가장 최근 요청만 처리하고 싶습니다.

정렬 명령이 도움이 되지 않습니다. 다음을 사용하고 있습니다.

sort -r -k 1.69,1.88 ./InputFile | sort -k 1.70,1.88 -u   > ./sortedReqFile

아이디어는 파일을 뒤집어서 고유한 항목을 가져오는 것이지만 -u를 사용하여 입력 파일을 직접 정렬하는 것과 동일한 결과를 제공합니다.

답변1

그냥 엉뚱한 추측일 뿐이야

 awk '{A[substr($0,69,88)]=$0 ; } END { for ( b in A ) print A[b] ;}' InputFile |
 sort -k 1.70,1.88 -u   > sortedReqFile
  • awk는 69-88자의 동일한 범위를 가진 줄의 마지막 항목을 유지합니다.
  • b배열에 대한 인덱스로 사용됩니다 A.
  • ./데이터 파일 앞부분은 필요하지 않습니다.

질문하신 내용

파일을 뒤집으면 sort -u가 동일한 결과를 제공하는 이유는 무엇입니까?

중요한 점은 첫 번째 정렬에서는 행이 변경되지 않으며 최종 정렬 명령에는 쓸모가 없다는 것입니다. 행을 변경하거나 삭제하지 않는 경우 그 사이에 원하는 만큼 sort의 을 추가할 수 있습니다 tac.

파일을 알파벳순으로 정렬한다고 가정합니다 H E L L O W O R L D(한 줄의 각 문자).

  • 파일 정렬:D E H L L L O O R W
  • -r 파일 정렬:W R O O L L L H E D
  • 정렬 -r 파일 | 정렬 -u :D E H L O R W
  • -u 파일 정렬:D E H L O R W

관련 정보