使用Awk命令实现两文件外连接时遇数值缺失问题求助
解决Awk命令输出缺失数值的问题
你的命令逻辑是优先使用File1中对应路径的数值,但当File2里的路径在File1中不存在时,数组a没有对应键值,a[$1]会是空值,导致第三行只输出逗号而缺失原有的数值1。
修改后的Awk命令如下:
awk -F, 'NR==FNR{a[$1]=$2; next} {print $1 FS (a[$1] ? a[$1] : $2)}' File1 File2
命令说明
这里用到了三目运算符 (a[$1] ? a[$1] : $2):
- 当数组
a中存在当前路径($1)对应的数值时,使用File1里存储的a[$1] - 当数组
a中没有对应路径的键值时,保留File2里原有的数值$2
执行该命令后就能得到你想要的预期输出:
/home/asingh549/cleanup,8 /home/vbhat94/test_bkup,8 /home/asingh699/sample/adam,1
内容的提问来源于stack exchange,提问作者user1980821
相关产品推荐
相关产品推荐

