Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Awk 我需要重叠两个.txt文件以消除公共行_Awk - Fatal编程技术网

Awk 我需要重叠两个.txt文件以消除公共行

Awk 我需要重叠两个.txt文件以消除公共行,awk,Awk,我有两组数据,我需要重叠它们以获得所需运行的最终列表 我试过grep和awk'NR==FNR{…}!一个[$0]'但这并没有给我一个正确的输出 grep -vf goodruns.txt idontneed.txt 及 输入:goodruns.txt,带有数字列表: 09987 09989 09991 09995 09996 09987 09988 09991 09993 09995 09997 idontneed.txt,带有数字列表: 09987 09989 09991 09995 0

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

我试过
grep
awk'NR==FNR{…}!一个[$0]'
但这并没有给我一个正确的输出

grep -vf goodruns.txt idontneed.txt

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

09987
09989
09991
09995
09996
09987
09988
09991
09993
09995
09997
idontneed.txt,带有数字列表:

09987
09989
09991
09995
09996
09987
09988
09991
09993
09995
09997
期望输出:

09989
09997

我对你的问题不是很清楚,但假设:a)你只想要第一个文件中不在第二个文件中的行,b)你的预期输出是错误的,因为09997没有出现在
goodruns.txt
中,它应该是09996,这是:

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

这确实需要对您的文件进行排序,您的示例就是这样。

您的
awk
工作正常,只需先确保您有
idontneed

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

如果您想要在
goodruns.txt
中存在而在
idontneed.txt
中不存在的行列表,这正是
comm
的用途

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

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

为什么您想要的输出不是:
09989 09996
?另外,正确格式化您的问题也会有很大帮助。我认为您的
grep
是正确的,但是您希望
idontneed.txt
作为
-f
选项的参数,所以请尝试颠倒cmd行上文件的顺序。祝你好运。公平,我在输出中犯了一个错误。现在这就行了!非常感谢。