Bash 长文件减去短文件等于迭代每行的新文件
我试图抨击这个脚本,似乎我问错了问题,或者找不到一个完善的例子 我拿了两个有列表的文件Bash 长文件减去短文件等于迭代每行的新文件,bash,shell,awk,grep,Bash,Shell,Awk,Grep,我试图抨击这个脚本,似乎我问错了问题,或者找不到一个完善的例子 我拿了两个有列表的文件 file1: aa bb cc dd ee ff file2: bb dd ff 创建file3=file1行-(在file2中的任何点处匹配行) file3: aa cc ee 感谢您的帮助或指导。如果可以使用这些文件,您可以使用: comm -2 -3 <(sort file1) <(sort file2) comm-2-3如果file2中的每一行都出现在file1中,那么很容易:
file1
:
aa
bb
cc
dd
ee
ff
file2
:
bb
dd
ff
创建file3
=file1
行-(在file2
中的任何点处匹配行)
file3
:
aa
cc
ee
感谢您的帮助或指导。如果可以使用这些文件,您可以使用:
comm -2 -3 <(sort file1) <(sort file2)
comm-2-3如果file2
中的每一行都出现在file1
中,那么很容易:
sort file1 file2 | uniq -u
如果无法对文件进行排序,并且您不知道上述条件是否正确(关于每一行),awk
可以这样做:
awk 'BEGIN { while ((getline line < "file2" > 0) {
f2[line]++
}
}
f2[$0] > 0 { print }' file1
awk'BEGIN{while((getline<“file2”>0){
f2[行]++
}
}
f2[$0]>0{print}文件1
注意:我不会将它用于非常大的文件2
如何
fgrep -v -f file2 file1
真的很大吗?我的列表中有太多的22K行,文件大小只有418KB。我尝试了排序,有些结果是文件中有更多的行。3.我基本上需要文件1-2。是的,文件2中的所有行都应该在文件1中。谢谢你的时间。对反应太晚表示歉意。我上周尝试了这个方法,最后得到了一个包含更多行的文件。因此我放弃了我不得不说,如果这对你不起作用,那么我可能不理解你的要求。我几乎100%确定它计算了两个文件的集差。