如果索引不在 awk 数组中则打印默认值

Print default value if index is not in awk array

$ cat file1 #It contains ID:Name   
5:John  
4:Michel

$ cat file2 #It contains ID  
5  
4  
3  

我想用文件 1 中的名称替换文件 2 中的 ID,需要输出

John  
Michel  
NO MATCH FOUND  

我需要扩展下面的代码以导致找不到匹配的文本。

awk -F":" 'NR==FNR {a[]=;next} {print a[]}' file1 file2 

我目前的成绩:

John  
Michel  
        << empty line

谢谢,

可以测试索引是否出现在数组中:

$ awk -F":" 'NR==FNR {a[]=;next}  in a {print a[]; next} {print "NOT FOUND"}' file1 file2
John
Michel
NOT FOUND

您可以为此使用三元运算符:print ( in a)?a[]:"NO MATCH FOUND"。即如果数组中有</code>,则打印;否则,打印文本 "NO MATCH FOUND".</p> <p>总计:</p> <pre><code>$ awk -F":" 'NR==FNR {a[]=;next} {print ( in a)?a[]:"NO MATCH FOUND"}' f1 f2 John Michel NO MATCH FOUND

如果file2只有数字(末尾没有space)

awk -F ':' ' in A {print A[];next}{if(~/^$/) print "NOT FOUND";else A[]=}' file1

如果没有

awk -F '[:[:blank:]]' ' in A {print A[];next}{if(~/^$/) print "NOT FOUND";else A[]=}' file1 file2