2つのファイルの比較

2つのファイルの比較

ファイルが2つあります。

ファイル1:

45 789 
46 4546
78 4564
71 546

ファイル2:

41 456 
46 456
40 465
45 456

これらのファイルを比較して出力を取得したいです。最初のファイルの最初の列の番号が2番目のファイルの最初の列にある場合は、その番号を含む2番目のファイルの行を印刷します。

希望の出力:

46 456
45 456

grepかもしれませんか?非常にありがとう

答え1

最初のファイルの列を読み取り、「表示された」値の配列を埋めます。次に、2番目のファイルを読み取ると、最初の値が「表示されたら」レコードが印刷されます。

$ awk 'NR == FNR { data[$1] = 1 } NR != FNR && data[$1] { print }' file1 file2
46 456
45 456

FR == NRusing and testの代わりにandを使用することもできます。FR != NRFILENAME == "file1"FILENAME == "file2"

答え2

シェルがbash/ksh/zshであるとします。

join -o 0,2.2 <(sort file1) <(sort file2)

答え3

注文する

awk 'NR==FNR{a[$1];next}($1 in a){print $0}' file1 file2

出力

46 456
45 456

関連情報