我正在使用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
标签信息页面。