2つのファイルに(ソートされた)IDのリストがあり、commコマンドを実行してそれらを比較しましたが、両方のファイルに共通する1行が欠落しているようです。何故ですか?
ファイル1:
1
2
3
4
5
6
7
8
9
11
12
13
15
16
17
18
19
20
21
22
File2:
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
は数値比較を行わず、辞書式にエントリのみを調べますか?もしそうなら、私がこれのために試すことができるいくつかの選択肢は何ですか?
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