別のファイルを検索して特定のフィールドに値を追加する

別のファイルを検索して特定のフィールドに値を追加する

ファイルA:

Castro  2
Manuel  5
Daniela 8
...

ファイルB:

Tom//UK  No
Mark//UK No
Castro//Chile Yes
...
Manuel//Spain No

出力:

Castro 2 Yes
Manuel 5 No
...

ファイルAの各名前を列挙し、ファイルBから検索し、2番目のフィールドをファイルAのフィールド3に追加します。

私がしようとしているもの:

cat File_A.txt | awk -F '\t' '{ print $1 }; $3=`grep -i $2 File_B.txt | head -1 | cut -f2`'

答え1

Awk解決策:

awk 'NR == FNR{ names[$1] = $2; next }
     { name = substr($1, 1, index($1, "/") - 1) }
     name in names { print name, names[name], $NF }' file1 file2

出力:

Castro 2 Yes
Manuel 5 No

答え2

別のawk解決策:

awk -F'//| ' 'NR==FNR{a[$1]=$3;next}NR>FNR{print $0,a[$1]}' fileB fileA

fileBにfileAに存在する名前がない場合、この行は印刷されます。

関連情報