Linux 정렬 명령은 두 개의 텍스트 파일에서 마지막 9줄과 14줄을 제외합니다.

Linux 정렬 명령은 두 개의 텍스트 파일에서 마지막 9줄과 14줄을 제외합니다.

안녕하세요, 특별한 문제가 있습니다... Linux sort 명령을 실행하여 두 개의 텍스트 파일(각 파일에 3331 및 4344 행이 있음)을 정렬하면 맨 위 행 3317 및 4335만 출력 파일에 포함됩니다. 내가 실행하는 명령은 다음과 같습니다.

sort -o contactspreservesort.csv contactspreserve.csv
sort -o contactsdeletesort.csv contactsdelete.csv

나는 또한 이것을 시도했습니다 :

sort contactspreserve.csv > contactspreservesort.csv
sort contactsdelete.csv > contactsdeletesort.csv

어떤 아이디어가 있나요? 감사해요

답변1

최종선이 누락되고 상위선이 유지된다는 것을 어떻게 알 수 있습니까? 파일이 더 짧다고 해서 마지막 몇 줄이 떨어지는 것이 아니라 뭔가가 빠졌다는 뜻입니다.

wc -l뿐만 아니라 4개 파일 모두에 대해 전체 wc를 표시합니다. 우리는 모든 (또는 대부분의) 캐릭터가 거기에 있다는 것을 알 수 있습니다. 일부 CR로 인해 일부 "가짜" 행이 연결될 수 있습니다(발생해서는 안 되지만 모든 일이 발생해서는 안 됨).

귀하의 작업 파일 정렬은 어디로 가나요? /tmp일 수도 있고 거의 꽉 찼을 수도 있습니다.

정렬을 실행한 후 상태를 에코합니다.

어떤 줄이 누락되었는지 정확하게 알려주기 위해 awk를 게시할 수 있으며, 이는 무슨 일이 일어나고 있는지 설명하는 데 도움이 될 수 있습니다. (파일이 다르게 정렬되어 있으면 Diff가 작동하지 않습니다. 엄청난 양의 보고서를 받게 됩니다.)

어쩌면 일부 줄이 너무 길 수도 있습니다. 제한 사항이 기억 나지 않습니다 (있는 경우). 최대 줄 길이를 표시하기 위해 awk를 실행할 수도 있습니다.

다음 질문을 해보세요. 어떤 운영 체제, 어떤 버전, 어떤 기계인지. 예를 들어, SunOS는 매우 불안정하고 줄이 길었습니다.

답변2

다들 감사 해요. 문제의 원인을 찾았습니다. sort 명령의 출력을 wc -l로 파이핑하려고 시도했는데 두 csv 파일 모두에 대해 행 수가 올바르게 보고되었습니다. 몇 번의 시행착오 끝에 저는 문제가 제가 사용하고 있던 Python 스크립트와 아무 관련이 없다는 것을 발견했습니다. sort 명령을 사용하여 파일을 정렬하는 스크립트 끝의 os.system 호출을 별도의 bash 쉘 스크립트로 대체했으며 이제 모든 것이 잘 작동합니다. 저는 Windows 10의 일부로 Ubuntu Linux 하위 시스템과 함께 번들로 제공되는 Python 3.6.7 및 Bash Shell을 사용하고 있습니다.

관련 정보