使用AWK匹配和替换列中的变量



我正在使用file1.txt中的值来匹配和替换file2.txt中的值。不匹配的值需要用NA替换。我尝试在下面编写一个小的AWK代码,但没有根据需要提供输出。欢迎任何建议或帮助。

awk 'FNR==NR 
{ a[$1]=$2;next}
{
for (i=1;i<=NF;i++) {
$i = ($i in a) ? a[$i] : "NA"
}
}1' file1.txt file2.txt

相反,我得到的输出如下:

NAk
NAt1
NAp1
...

示例文件:file1.text

EN01    Car
EN28    Bus
EN37    Scooter
EN49    Van

file2.txt

EN01    EN28
EN28    EN37
ENXX    EN49
EN01    EN28

输出(我需要(

Car   Bus
Bus   Scooter
NA    Van
Car   Bus

_

也许

awk '
NR == FNR {vehicle[$1] = $2; next}
function get(id) { return id in vehicle ? vehicle[id] : "NA" }
{print get($1), get($2)}
' file1.txt file2.txt | column -t

代码中的错误是FNR==NR之后的换行:条件必须与操作块在同一行。请参阅awk标签信息页面。

最新更新