ファイルが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 == NR
using and testの代わりにandを使用することもできます。FR != NR
FILENAME == "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