2つのファイルを比較し、一致する履歴を表示します。

2つのファイルを比較し、一致する履歴を表示します。

あなたの助けが本当に必要です。私はUnixに初めて触れます。 File2(3列)をFile1(元のデータ)と比較し、結果を新しいファイルに保存したいと思います。しかし、私のファイルには異なる区切り文字があります。

例:

File1 (in tab delimited)
Col1    Col2    Col3    Col4    Col5
a       1       JJ      KK      DD
b       2       TT      RR      EE
c       3       QQ      ZZ      PP

File2 (in pipe delimited)
Col1    Col2    Col3
b       TT      RR
c       QQ      ZZ

Result
Col1    Col2    Col3    Col4    Col5
b       2       TT      RR      EE
c       3       QQ      ZZ      PP

私のファイルが大きくて速く実行するにはコードが必要であることに注意してください。 file1と一致するには、file2の列3を一致させる必要があります。ありがとうございます!

ベストアンサー1

注文する

u=`awk 'NR==1{print $0}' fil1`

awk -v u="$u"  'BEGIN {print u}NR==FNR{a[$3];next}($4 in a){print $0}' fil2 fil1

出力

Col1    Col2    Col3    Col4    Col5
b       2       TT      RR      EE
c       3       QQ      ZZ      PP

おすすめ記事