相关疑难解决方法(0)

在一个文件中找到不在另一个文件中的行的快速方法?

我有两个大文件(文件名集).每个文件大约有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)

当然,必须有更好的方法吗?

bash diff grep find

199
推荐指数
9
解决办法
12万
查看次数

如何从另一个文件A中删除文件B上出现的行?

我有一个大文件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专家.

linux shell diff grep sed

144
推荐指数
6
解决办法
8万
查看次数

标签 统计

diff ×2

grep ×2

bash ×1

find ×1

linux ×1

sed ×1

shell ×1