Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/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
Bash 长文件减去短文件等于迭代每行的新文件_Bash_Shell_Awk_Grep - Fatal编程技术网

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%确定它计算了两个文件的集差。