比较两个文件以进行匹配,如果找到重复的匹配项,则仅打印一个

时间:2018-11-27 08:08:24

标签: awk

我有两个文件。 File1和File2。 File2有一些重复的条目,由于文件结构的复杂性,我无法删除它们。现在,在生成File3时,在File1和File2之间将具有匹配的第一列和第二列;我只想从File2获得一个条目来匹配File1的模式。什么是做到这一点的最佳方法。我尝试了awk 'NR==FNR{a[$1,$2]=$0;next} ($1,$2) in a{print $0}' File1 File2,但它保留了File2中所有匹配的条目

File1
ab 12
cd 24
ef 56

File2
ab 12
ab 12
ef 56

得到的是

File3
ab 12
ab 12
ef 56

但是我想要的是

File3
ab 12
ef 56

谢谢

2 个答案:

答案 0 :(得分:2)

更多方式

输入:

$ cat f1
ab 12
cd 24
ef 56

$ cat f2
ab 12
ab 12
ef 56

输出:

$ awk '{k=$1 SUBSEP $2}FNR==NR{a[k]; next}k in a && !a[k]++' f1 f2
ab 12
ef 56

为了获得更好的可读性++a[k]==1(通过考虑线程标题“比较两个文件是否匹配,如果找到重复的匹配项则仅打印一个”)

$ awk '{k=$1 SUBSEP $2}FNR==NR{a[k]; next}k in a && ++a[k]==1' f1 f2
ab 12
ef 56

答案 1 :(得分:1)

找到匹配的行后,您需要从http://localhost:9090/api/v1/users/name net::ERR_CONTENT_DECODING_FAILED 502 (Bad Gateway) 中删除条目。

a