たとえばfile1.txt
、以下を含む参照リストがあるとします。
a
b
c
d
そして、私はfile2.txt
次のようなデータファイルを持っています:
a 1 2 3
b 5 6 7
d 6 7 8
e 7 8 9
で必要な出力output.txt
:
a 1 2 3
b 5 6 7
d 6 7 8
のIDfile1.txt
を の最初の列と一致させfile2.txt
、行全体 ( からの行file2.txt
) をoutput.txt
これは、join
次の目的で設計されています。
$ join f1 f2
a 1 2 3
b 5 6 7
d 6 7 8
sort
最初にファイルが必要な場合:
join <(sort f1) <(sort f2)
awk 'FNR==NR{a[$1];next}($1 in a)' file1.txt file2.txt
また、perlで:
perl -F -lane '$h{$F[0]}++;if($h{$F[0]}>=2){print $_;}' file1 file2
注: 上記の perl コマンドは、最初のファイルに一意の ID がある場合に機能します。