如果索引不在 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
$ 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