両方のファイルを比較し、一致しない行を印刷します。

両方のファイルを比較し、一致しない行を印刷します。

次のデータを含む2つのファイルがあります。両方のファイルの違いが必要です。

私はそれを試しましたが、diff両方のファイルに共通の行も表示されます(22372 Dec 4 15:36 /opt/apache-tomcat-6.0.36/webapps/new/new.txt)

最初のファイル:(ファイル1にも複数のデータがあります)

22677 Dec 4 15:36 /opt/apache-tomcat-6.0.36/webapps/new/abc.txt

22372 Dec 4 15:36 /opt/apache-tomcat-6.0.36/webapps/new/new.txt

2番目のファイル:(ファイル2にも複数のデータがあります)。

22372 Dec 4 15:36 /opt/apache-tomcat-6.0.36/webapps/new/new.txt

22677 Dec 3 15:36 /opt/apache-tomcat-6.0.36/webapps/new/abc.txt

12344 Dec 10 15:36 /opt/apache-tomcat-6.0.36/webapps/abc/.../test.txt

次の出力が必要です。

22677 Dec 3 15:36 /opt/apache-tomcat-6.0.36/webapps/new/abc.txt

12344 Dec 10 15:36 /opt/apache-tomcat-6.0.36/webapps/abc/.../test.txt

ベストアンサー1

これは通信を使用するのに最適な機会のようです。

GNU coreutilsのマニュアルページ(v8.30)から:

With  no  options,  produce  three-column  output.  Column one contains
lines unique to FILE1, column two contains lines unique to  FILE2,  and
   column three contains lines common to both files.

   -1     suppress column 1 (lines unique to FILE1)

   -2     suppress column 2 (lines unique to FILE2)

   -3     suppress column 3 (lines that appear in both files)

file1この情報を使用して、2つのファイルの行だけでなく、一意の行も削除できます。

$ comm -1 -3 <(sort file1) <(sort file2)
12344 Dec 10 15:36 /opt/apache-tomcat-6.0.36/webapps/abc/.../test.txt
22677 Dec 3 15:36 /opt/apache-tomcat-6.0.36/webapps/new/abc.txt

-1と-3は、ファイル1に固有のすべての行と両方のファイルに共通のすべての行を削除します。

ソートによって出力順序が変わりますが、質問による考慮事項ではないようです。

入力がすでにソートされている場合は、ソートをスキップできます。

$ comm -1 -3 file1 file2

おすすめ記事