有谁知道如何打印"未找到"如果没有匹配,那么打印输出将始终包含与文件1相同的行数?
更具体地说,我有两个包含四列的文件:
文件1:
1 800 800 0.51
2 801 801 0.01
3 802 802 0.01
4 803 803 0.23
文件2:
1 800 800 0.55
2 801 801 0.09
3 802 802 0.88
4 803 804 0.24
这就是我现在使用的:
$ awk 'NR==FNR{a[$1,$2,$3];next}($1,$2,$3) in a{print $4}' file1.txt file2.txt
这会生成以下输出:
0.55
0.09
0.88
但是,我希望得到这个:
0.55
0.09
0.88
Not Found
你可以帮忙吗?
对不起,如果这是一个令人困惑的方式;我对awk的经验很少,我很困惑。
在另一个问题中,我想最终得到一个文件,其中将文件2中的数据添加到File1,如下所示:
1 800 800 0.51 0.55
2 801 801 0.01 0.09
3 802 802 0.01 0.88
4 803 803 0.23 Not Found
我打算像以前一样生成文件(让我们称之为file2-matches.txt),然后使用粘贴命令:
粘贴-d" \ t" file1.txt file2-matches.txt> output.txt的
但考虑到我必须对超过100个文件进行匹配,是否有更有效的方法可以建议你这样做?
答案 0 :(得分:0)
添加else
子句:
$ awk 'NR==FNR{a[$1,$2,$3];next} {if (($1,$2,$3) in a) {print $4} else {print "not found"}}' f1 f2
0.55
0.09
0.88
not found