首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >grep --一种跨越大型文件集的模式,不需要GNU并行。

grep --一种跨越大型文件集的模式,不需要GNU并行。
EN

Unix & Linux用户
提问于 2019-11-08 11:32:52
回答 2查看 396关注 0票数 1

我想在一台36台核心机器上快速地实现一种跨越10M文件的grep模式--我尝试过这样做

代码语言:javascript
复制
find . -name '*.xml' -type f | xargs  -P 20 grep "username" >> output

但我在中间得到了一些其他的结果。

有什么更好的方法吗?

提前谢谢。

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2019-11-08 13:48:45

考虑到您的数据是关于非突袭HDD,我怀疑您将获得更好的性能通过并行,瓶颈是最有可能是I/O,而不是CPU。

代码语言:javascript
复制
LC_ALL=C grep -rwF --include='*.xml' username . > /on/some/other/disk/output

可能接近你所能达到的最好的结果。

要并行化,您可能希望这样做:

代码语言:javascript
复制
LC_ALL=C find . -name '*.xml' -type f -print0 |
  LC_ALL=C xargs -r0P20 -n 1000 grep -HFw --line-buffered username > output

假设没有超过4KiB的输出行(输入行+文件路径名),并注意所有20个并发grep的行将被交错。

请参见:

了解详细信息。

票数 1
EN

Unix & Linux用户

发布于 2019-11-08 12:12:40

我想是因为这个模式太笼统了。通常,命令行实用程序会将错误打印到stderr或终端。他们不应该进入输出文件。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/551117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档