2つのファイルの文字列を比較する方法

2つのファイルの文字列を比較する方法

2つのテキストファイルがあり、1つには次の内容が含まれています。

Id         Value
1         apple   
2         orange  
3         mango 
4         banana 
5         strawberry
6         papaya

他のファイルにも同様のエントリがあります

Id        Value
6         strawberry 
4         banana
3         orange  
1         mango
2         papaya
5         straw berry

値列のIDとその文字列を一致させ、文字列の正確性を見つける必要があります。これはどのように達成できますか?

ベストアンサー1

各ファイルに常に同じ数のエントリがあり、各IDが異なるファイルの同じIDに関連付けられている場合は、次のことができます(これは概念証明であるため、改善する必要があります)。

$ join -j1 <(sort -n file1.txt) <(sort -n file2.txt) | 
    awk '{if($2!=$3){k="==> BUG"}else {k=" ==> OK"}print $0,k}'

Id Value Value ==> OK
1 apple  mango ==> BUG
2 orange  papaya ==> BUG
3 mango  orange  ==> BUG
4 banana  banana ==> OK
5 strawberry straw berry ==> BUG
6 papaya strawberry  ==> BUG

たとえば、ID#4が2番目のファイルにない場合、「現状のまま」は機能しません。

ヘッダーを削除してBUG行のみを保持する必要があります。

$ join -j1 <(sort -n file1.txt | tail -n+2) <(sort -n file2.txt | tail -n+2) | 
    awk '($2!=$3){print $0," ==> BUG"}'

おすすめ記事