首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用作agrep的输入的xargs字符串

用作agrep的输入的xargs字符串
EN

Stack Overflow用户
提问于 2012-06-21 09:21:23
回答 1查看 195关注 0票数 0

伙计们,我正在使用xargs来传递协议的输入。

代码语言:javascript
复制
Script:    
xargs -L 1 -I string echo "RequestId="string | xargs -L 1 -I string zcat FILEB | agrep -dEOE string


Output till "RequestId="string
RequestID=543214324
RequestID=512121221
RequestID=521212121

我的目标是在另一个文件“文件B”中同意这个请求ID。因为这个文件是压缩的,所以在执行agrep...But之前我需要使用zcat,如果我这样做,我得到的结果是不正确的。我在agrep中使用的最后一个"string“是不正确的..任何关于这方面的建议都会非常有帮助。

EN

回答 1

Stack Overflow用户

发布于 2012-06-27 22:52:51

现在还不完全清楚你想要什么。我假设您有一个文件FILEA,其中包含:

代码语言:javascript
复制
543214324
512121221
521212121

并且您想要同意FILEB.gz:

代码语言:javascript
复制
RequestID=543214324
RequestID=512121221
RequestID=521212121

FILEBB.gz是gzipped格式的,所以您需要zcat来解压它,并且您不能使用zgrep,因为您依赖于一个仅在agrep中找到的特性。

使用GNU并行,您可以做到:

代码语言:javascript
复制
cat FILEA | parallel zcat FILEB.gz \| agrep -dEOE RequestID={}

并行执行的优点之一是,如果FILEB.gz太大而无法放入内存,那么这将确保并行搜索,从而避免每次搜索时从磁盘读取FILEB.gz。另一个优点是,您可以使用多个CPU核心,这是您的计算机几乎保证拥有这些天。

您可以简单地通过以下方式安装GNU Parallel:

代码语言:javascript
复制
wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem

观看GNU Parallel的介绍视频以了解更多信息:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

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

https://stackoverflow.com/questions/11130374

复制
相关文章

相似问题

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