2つのファイルの列間の特定の行数を比較します。

2つのファイルの列間の特定の行数を比較します。

1000個のファイルがあり、2番目の列(最大特定の行数)にすべて同じ情報があることを確認する必要があります。以下は例です。 file1.txtとfile2.txtファイルの2番目の列の最初の5行が同じでない場合は、ファイル名を印刷したいと思います。この場合、結果は次のようになります。 「file1.txtファイルとfile2.txtファイルの違い」

ファイル1.txt

jose     50
maria    50
fernando 50
andres   50
martin   30
pablo    30
.
.
.

ファイル2.txt

julia    50
julio    50
alan     50
ruth     50
ana      40
manuel   40
.
.
.                    

答え1

よく。私はファイルに対してforループを実行してからcomm

/tmp ❯ comm -3 <(cat file1.txt|awk '{print $2}') <(cat file2.txt|awk '{print $2}')                                    ⏎
30
30
    40
    40

ファイルから30と40が出力されます。いくつかの基本的な用途は次のとおりですcommcomm -1 -3 <(sort -u FILE1.txt) <(sort -u FILE2.txt)

  • -1 は FILE1 関連行を抑制します。
  • -2 FILE2 関連ラインを抑制します。
  • -3 は両方のファイルに現れる行を抑制します。

したがって、これらすべてを次のように整理してください。

cd /path/to/files && find . -type f -name "*.txt" | while read filename
do
   echo "*** Checking $filename ***"; comm -3 <(cat reference.txt|awk '{print $2}') <(cat $filename|awk '{print $2}'); echo "";
done

関連情報