Linuxシステムには、次のデータを含む2つのCSVファイルがあります。
ファイルA
Sunil,21,write a line,2312,12-03-2022
Ashok,22,write a para,2312,12-03-2022
Sam,23,create file using,2312,12-03-2022
文書B
21,write a line,Writer
21,write a script,Writer
23,create file using,Coder
25,create class,Coder
22,write a para,Poet
22,write a file,Writer
これで、FileAの2番目と3番目の列(21行、行の書き込みなど)をFileBと比較し、一致すると、FileBの3番目の列を印刷する必要があります。
出力:
Writer
Poet
Coder
ベストアンサー1
必要なものを取得し、データが提供されたと仮定すると、次のように達成できます。
awk -F, 'NR==FNR{array[$2,$3]; next} ($1,$2) in array { print $NF}' filea fileb
基本的にここで行うことは、array
現在のレコード処理を停止したときに列2と列3を保存することです(使用するnext
)。 then is$1
と$2
of fileb in array
if そうであれば、レコードの最後の列を参照する$NF
場所を印刷します。$NF
NR
FNR
awkに組み込まれた変数です。 NRはこれまでのレコードの総数を表し、FNRは現在のファイルのレコード数を表します。