我需要重叠两个.txt文件,以消除共同之处

时间:2019-07-02 00:28:50

标签: awk

我有2组数据,我需要将它们重叠以获取所需运行的最终列表

我尝试过grepawk 'NR==FNR{...}!a[$0]',但这并不能给我正确的输出结果

grep -vf goodruns.txt idontneed.txt

awk 'NR==FNR{a[$0]=1;next}!a[$0]'

输入:goodruns.txt,带有数字列表:

09987
09989
09991
09995
09996

idontneed.txt,其中包含数字列表:

09987
09988
09991
09993
09995
09997

所需的输出:

09989
09997

3 个答案:

答案 0 :(得分:1)

如果您要获取goodruns.txt中存在的行列表,而idontneed.txt中不存在的行列表,这正是comm的作用。

使用bash,sort和comm的解决方案可能是:

comm -2 -3 <(sort goodruns.txt) <(sort idontneed.txt)

如果您更喜欢使用awk或grep,则只需反转文件即可使用它们:

grep -vf idontneed.txt goodruns.txt

awk 'NR==FNR{a[$0]=1;next}!a[$0]' idontneed.txt goodruns.txt

答案 1 :(得分:0)

您的问题对我来说不是很清楚,但假设:a)您只希望第一个文件中的行不在第二个文件中,并且b)您的预期输出是错误的,因为09997没有出现在goodruns.txt,它应该是09996,它可以:

$ join -v1 goodruns.txt idontneed.txt
09989
09996

这确实需要对文件进行排序,即样本的类型。

答案 2 :(得分:0)

您的TradingSystem.QuoteUpdate工作正常,只需确保先拥有awk

idontneed