搜索另一个文件并向特定字段添加值

搜索另一个文件并向特定字段添加值

文件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中搜索它,并将第二个字段添加到文件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 中存在的名称,则将打印该行。

相关内容