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が出力されます。いくつかの基本的な用途は次のとおりですcomm
。
comm -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