두 파일의 ID 목록(정렬됨)이 있고 comm 명령을 실행하여 이를 비교했지만 두 파일에 공통적인 줄이 누락된 것 같습니다. 왜 그런 겁니까?
파일 1:
1
2
3
4
5
6
7
8
9
11
12
13
15
16
17
18
19
20
21
22
파일 2:
16
18
21
23
705
707
709
711
712
826
827
839
846
847
848
872
873
874
875
891
통신 출력:$> comm file1 file1
1
16 //exists in both files
18 //exists in both files
2
21
23
3
4
5
6
7
705
707
709
711
712
8
826
827
839
846
847
848
872
873
874
875
891
9
11
12
13
15
16 //it's here!
17
18 //...and here!
19
20
21
22
파일이 모두 정렬되었습니다. 하지만 내 생각엔 comm
수치적 비교는 아니고 단지 사전순으로 항목을 보는 것뿐인가? 그렇다면 어떤 대안을 시도해 볼 수 있나요?
답변1
comm
파일 중 하나가 정렬되지 않았음을 알려줍니다.
comm: file 1 is not in sorted order
LC_COLLATE
현재 로케일의 데이터 정렬(결정된)을 사용하여 파일이 정렬될 것으로 예상합니다. 숫자 순서는 허용되지 않습니다.
파일을 비교하려면 미리 정렬할 수 있습니다(지시한 대로 사전순으로).
comm <(sort file1) <(sort file2)
결과를 숫자순으로 정렬하려면 다시 정렬하세요.
comm <(sort file1) <(sort file2) | sort -n
이것은 생산할 것입니다
1
2
3
4
5
6
7
8
9
11
12
13
15
16
17
18
19
20
21
22
23
705
707
709
711
712
826
827
839
846
847
848
872
873
874
875
891