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

标签 awk associative-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[$1]=$2;next} {print a[$1]}' file1 file2 

我目前的结果:

John  
Michel  
        << empty line

谢谢,

最佳答案

您可以为此使用三元运算符:print ($1 in a)?a[$1]:"NO MATCH FOUND"。也就是说,如果$1在数组中,打印它;否则,打印文本“NO MATCH FOUND”。

一起:

$ awk -F":" 'NR==FNR {a[$1]=$2;next} {print ($1 in a)?a[$1]:"NO MATCH FOUND"}' f1 f2
John
Michel
NO MATCH FOUND

关于awk - 如果索引不在 awk 数组中则打印默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34631665/

相关文章:

php - 我可以将关联数组发送到包含的 Twig 模板中吗?

asp.net - 循环访问 ASP.NET 缓存对象中的键

php - 如何在php中的数组中插入新的键值对?

awk - 如何匹配列字段并将它们的值组合在一起?

git - AWK - 解析 git status 命令中的第二列

Linux/Unix bash 基本脚本 awk/sed

PHP 按值重新排序数组

PHP:打印关联数组

bash - grep 从特定文本 block 中提取字符串

linux - 在格式化的 bash 脚本中比较日期和日志