2つのファイルのIDリスト(ソート)があり、commコマンドを実行してそれらを比較しましたが、2つのファイルに共通の行がありません。なぜそんなことですか?
ファイル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
ファイルの1つがソートされていないことを知らせます。
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