gpt4 book ai didi

bash - Grep 到多个输出文件

转载 作者:行者123 更新时间:2023-11-29 09:17:48 25 4
gpt4 key购买 nike

我有一个巨大的文件(超过 6GB)和大约 1000 个模式。我想提取与每个模式匹配的行来分隔文件。例如我的模式是:

1
2

我的文件:

a|1
b|2
c|3
d|123

作为输出,我想要 2 个文件:

1:

a|1
d|123

2:

b|2
d|123

我可以通过多次 greping 文件来做到这一点,但是对于 1000 个模式和巨大的文件来说效率很低。我也尝试过这样的事情:

grep -f pattern_file huge_file

但它只会生成 1 个输出文件。我无法整理我的大文件 - 这需要很多时间。也许 AWK 会成功?

最佳答案

awk -F\| 'NR == FNR {
patt[$0]; next
}
{
for (p in patt)
if ($2 ~ p) print > p
}' patterns huge_file

对于某些 awk 实现,您可能会达到打开文件的最大数量限制。让我知道是否是这种情况,以便我可以发布替代解决方案。

P.S.:这个版本将一次只打开一个文件:

awk -F\| 'NR == FNR {
patt[$0]; next
}
{
for (p in patt) {
if ($2 ~ p) print >> p
close(p)
}
}' patterns huge_file

关于bash - Grep 到多个输出文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8363718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com