$ cat file1 #It contains ID:Name
5:John
4:Michel
$ cat file2 #It contains ID
5
4
3
我想用file1中的Names替换file2中的ID,需要输出
John
Michel
NO MATCH FOUND
我需要扩展以下代码以重新编写NO MATCH FOUND文本。
awk -F":" 'NR==FNR {a[$1]=$2;next} {print a[$1]}' file1 file2
我目前的结果:
John
Michel
<< empty line
谢谢,
答案 0 :(得分:4)
您可以使用三元运算符:print ($1 in a)?a[$1]:"NO MATCH FOUND"
。也就是说,如果$1
在数组中,则将其打印出来;否则,打印文本&#34;找不到匹配&#34;。
所有在一起:
$ awk -F":" 'NR==FNR {a[$1]=$2;next} {print ($1 in a)?a[$1]:"NO MATCH FOUND"}' f1 f2
John
Michel
NO MATCH FOUND
答案 1 :(得分:2)
您可以测试索引是否出现在数组中:
$ awk -F":" 'NR==FNR {a[$1]=$2;next} $1 in a {print a[$1]; next} {print "NOT FOUND"}' file1 file2
John
Michel
NOT FOUND
答案 2 :(得分:0)
if file2 has only digit (no space at the end)
awk -F ':' '$1 in A {print A[$1];next}{if($2~/^$/) print "NOT FOUND";else A[$1]=$2}' file1
if not
awk -F '[:[:blank:]]' '$1 in A {print A[$1];next}{if($2~/^$/) print "NOT FOUND";else A[$1]=$2}' file1 file2