是否可以查找并过滤其中一列具有匹配值但另一列中具有不匹配值的记录?

是否可以查找并过滤其中一列具有匹配值但另一列中具有不匹配值的记录?

我需要过滤掉第二个文件中的记录:

假设 file1 是这样的:

0006296 OIL FILTER PH3506   HONEYWELL   Parts and Repair    3101
0015735 OIL FILTER PH2870   HONEYWELL   Parts and Repair    3101

文件2将是:

0006296 OIL FILTER PH3506   HONEYWELL   Parts and Repair    3101
0015735 OIL FILTER PH2870   HONEYWELL   Automotive          4201

我如何过滤掉文件 2 中的第二行,因为它有一个匹配的第一列,但有一列与最后一列不匹配。

答案1

使用第一个和最后一个字段作为键应该足够了:

$ awk 'NR==FNR{a[$1"-"$NF]++;next}$1"-"$NF in a' file1 file2
0006296 OIL FILTER PH3506   HONEYWELL   Parts and Repair    3101

我们用一些东西(在我的例子中是破折号)分隔这两个字段,以避免0006296 and 310100062963 and 101

相关内容