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