두 파일에 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