GNU/Linux >> Linux の 問題 >  >> Linux

Linuxで2つのソートされていないリストを比較し、2番目のファイルに一意のものをリストします

comm を使用する必要があります :

comm -13 first.txt second.txt

ps。コマンド ラインの最初と 2 番目のファイルの順序が重要です。

また、前にファイルをソートする必要があるかもしれません:

comm -13 <(sort first.txt) <(sort second.txt)

ファイルが数値の場合は -n を追加します sort へのオプション .


これでうまくいくはずです

comm -13 <(sort file1) <(sort file2)

sort -n (数値) は、内部で sort (英数字) を使用する comm では動作しないようです

f1.txt

1
2
21
50

f2.txt

1
3
21
50

21 は 3 列目に表示されます

#WRONG
$ comm <(sort -n f1.txt) <(sort -n f2.txt)   
                1
2
21
        3
        21
                50

#OK
$ comm <(sort f1.txt) <(sort f2.txt)
                1
2
                21
        3
                50

cat f1.txt f2.txt | sort |uniq > file3

grep -Fxv -f first-file.txt second-file.txt

基本的に second-file.txt のすべての行を探します first-file.txt のどの行とも一致しません .ファイルが大きい場合は遅くなる可能性があります。

また、ファイルを並べ替えたら (sort -n を使用) 数値の場合)、comm も機能するはずです。どのようなエラーが発生しますか?これを試してください:

comm -23 second-file-sorted.txt first-file-sorted.txt

Linux
  1. Linux – Unix / linuxファイルのディレクトリ構造情報をどのように検査しますか?

  2. Linuxでのファイルコマンドの基本的な例

  3. Linux ソートのデフォルトの順序は何ですか?

  1. Linuxターミナルでファイルをコピーする

  2. Linuxターミナルでファイルの名前を変更します

  3. Linux で MB ではなく GB で du を表示するにはどうすればよいですか?

  1. Linuxターミナルでファイルを移動する

  2. Linuxでの並べ替えコマンドと例

  3. Linuxでの.bashrcファイルの目的は何ですか