Bash - 删除两个CSV文件中的相同行

时间:2017-05-10 21:06:16

标签: bash shell awk

我有两个CSV文件 - nodes.csv和edges.csv - 其中列是制表符分隔的。我已使用

删除了nodes.csv中的某些行
awk -F'\t' -i inplace '($3 != "Symbol")' nodes.csv

如何删除edges.csv中的相应行?

例如,在nodes.csv中,我有:

ANR 35755   ParameterType   uint32_t
CYP 35756   Identifier      status
ANR 35757   CFGEntryNode    ENTRY
ANR 35758   CFGExitNode     EXIT
ANR 35759   Symbol          * host
CYP 35760   Symbol          * irq_status_bits
ANR 35761   Symbol          irq_status_bits

在edges.csv中,我有:

35738   35758   FLOWS_TO
35689   35759   USE
35701   35759   USE
35727   35760   USE
35734   35760   USE
35727   35761   USE
35735   35761   USE

我需要删除nodes.csv中的第5,6,7行,因为第3列有值符号。如何删除edges.csv中的第5,6,7行?

输出: nodes.csv

ANR 35755   ParameterType   uint32_t
CYP 35756   Identifier      status
ANR 35757   CFGEntryNode    ENTRY
ANR 35758   CFGExitNode     EXIT

edges.csv

35738   35758   FLOWS_TO
35689   35759   USE
35701   35759   USE
35727   35760   USE

非常感谢!

1 个答案:

答案 0 :(得分:0)

awk -F'\t' -i inplace 'NR==FNR{if ($3 != "Symbol") a[NR]} FNR in a' nodes.csv edges.csv