小编Axe*_*son的帖子

grep 与另一个文件 (4.8Gb) 中匹配的一个文件 (3.2Gb) 中的模式

我有两个文本文件。一种是带有姓名、电子邮件地址和其他字段的文本文件。一些线路来自file1

John:myemail@gmail.com:johnson123:22hey
Erik:thatwhatsup@gmail.com:johnson133:22hey
Robert:whatsup@gmail.com:johnson123:21hey
Johnnny:bro@gmail.com:johnson123:22hey
Run Code Online (Sandbox Code Playgroud)

另一个只包含电子邮件地址。示例来自file2

1@gmail.com
rsdoge@gmail.com
mynameiscurt@hotmail.com
myemail@gmail.com
Run Code Online (Sandbox Code Playgroud)

我希望输出是每个完整的行,file1file2. 例如,myemail@gmail.comis in file2,所以我想看到以下行file1

John:myemail@gmail.com:johnson123:22hey
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法来搜索file1和输出与“电子邮件地址列表”匹配的行file2

我一直在搜索 HOURS,但我的 Google 搜索(和 StackOverflow 搜索)以及在命令行上的努力到目前为止还没有奏效。

我尝试过并认为可行的命令:

fgrep -f file2.txt file1.txt > matched.txt
grep -F -f ....
grep -F -x -f file1 file2 > common 
Run Code Online (Sandbox Code Playgroud)

等等,但他们都得到了grep memory exhausted- 我匹配的文件是 4.8GB ( file1) 和 3.2GB ( file2,仅包含电子邮件地址)。我假设这些命令会耗尽内存。我找到了一种方法find,我想可以更顺畅地执行命令,但没有让它起作用。

tldr ; 需要匹配file2, …

linux grep large-files

8
推荐指数
3
解决办法
4912
查看次数

比较两个文件并打印匹配项 - 大文件

我需要比较 2 个文件并打印匹配的行。如果 file1 用户名在 file2 (字段 1)中,我想将其打印到新的匹配文件中。

文件1.txt:

Hey123
Johnson
Hanny123
Fanny
Run Code Online (Sandbox Code Playgroud)

(文件 1 为 240MB - 20.000.000 行)

文件2.txt:

Gromy123:hannibal
Hey123:groll
Hanny123:tronda9
Kroppsk:football23
Run Code Online (Sandbox Code Playgroud)

(file2 是 1.4GB - 69.000.000 行)

预期的匹配行输出:

Hanny123:tronda9
Hey123:groll
Run Code Online (Sandbox Code Playgroud)

我已经尝试了 4 个小时没有成功。两个文件都已排序,我尝试过 join + 无数的 grep / awk 命令。我的大问题是 RAM 耗尽。希望得到一些帮助,我如何解决这个问题,这么大的文件。

grep awk text-processing

4
推荐指数
1
解决办法
3409
查看次数

标签 统计

grep ×2

awk ×1

large-files ×1

linux ×1

text-processing ×1