我有两个大文件(文件名集).每个文件大约有30,000行.我试图找到一种快速查找file1中不存在于file2中的行的方法.
例如,如果这是file1:
line1
line2
line3
Run Code Online (Sandbox Code Playgroud)
这是file2:
line1
line4
line5
Run Code Online (Sandbox Code Playgroud)
然后我的结果/输出应该是:
line2
line3
Run Code Online (Sandbox Code Playgroud)
这有效:
grep -v -f file2 file1
但是在我的大文件上使用它时非常非常慢.
我怀疑有一个很好的方法来使用diff(),但输出应该只是行,没有别的,我似乎无法找到一个开关.
任何人都可以帮我找到一个快速的方法,使用bash和基本的Linux二进制文件?
编辑:为了跟进我自己的问题,这是我到目前为止使用diff()找到的最好方法:
diff file2 file1 | grep '^>' | sed 's/^>\ //'
Run Code Online (Sandbox Code Playgroud)
当然,必须有更好的方法吗?
我有一个大文件A(包含电子邮件),每封邮件一行.我还有另一个包含另一组邮件的文件B.
我将使用哪个命令从文件A中删除文件B中出现的所有地址.
所以,如果文件A包含:
A
B
C
Run Code Online (Sandbox Code Playgroud)
和文件B包含:
B
D
E
Run Code Online (Sandbox Code Playgroud)
然后文件A应该留下:
A
C
Run Code Online (Sandbox Code Playgroud)
现在我知道这是一个可能经常被问到的问题,但我只在网上发现了一个命令错误的分隔符.
任何帮助将非常感激!有人肯定会想出一个聪明的单行,但我不是shell专家.