使用 awk 从文件 1 中搜索具有 3 列的文件 2

Searching File2 with 3 columns from File 1 with awk

有谁知道如何在不匹配的情况下打印 "Not Found",以便打印输出始终包含与文件 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[,,];next}(,,) in a{print }' file1.txt file2.txt

这会生成以下输出:

0.55

0.09

0.88

不过,我想得到这个:

0.55

0.09

0.88

Not Found

你能帮忙吗? 抱歉,如果以令人困惑的方式呈现;我对 awk 的经验很少,自己也很困惑。


在一个单独的问题中,我希望最终得到一个将文件 2 中的数据添加到文件 1 的文件,如下所示:

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),然后使用粘贴命令:

paste -d"\t" file1.txt file2-matches.txt > output.txt

但是考虑到我必须对 100 多个文件进行匹配,您是否可以建议更有效的方法?

添加一个else子句:

$ awk 'NR==FNR{a[,,];next} {if ((,,) in a) {print } else {print "not found"}}' f1 f2
0.55
0.09
0.88
not found