xargs 字符串用作 agrep 的输入

Posted

技术标签:

【中文标题】xargs 字符串用作 agrep 的输入【英文标题】:xargs string used as an input for agrep 【发布时间】:2012-06-21 01:21:22 【问题描述】:

伙计们,我正在使用 xargs 将输入传递给 agrep。我正在使用如下所示的 xargs

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 之前使用 zcat ......但是如果我这样做,我会得到不正确的结果.. 我在 agrep 中使用的最终“字符串”不正确.. 任何关于此的建议都将是高度有帮助。

【问题讨论】:

【参考方案1】:

你想要什么并不完全清楚。我假设你有一个文件 FILEA 包含:

543214324
512121221
521212121

并且您想将 FILEB.gz 用于:

RequestID=543214324
RequestID=512121221
RequestID=521212121

FILEBB.gz 是 gzip 压缩的,所以你需要 zcat 来解压它,并且你不能使用 zgrep,因为你依赖于仅在 agrep 中找到的功能。

使用 GNU Parallel 你可以做到:

cat FILEA | parallel zcat FILEB.gz \| agrep -dEOE RequestID=

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

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

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

【讨论】:

以上是关于xargs 字符串用作 agrep 的输入的主要内容,如果未能解决你的问题,请参考以下文章

Linux xargs命令

修改 xargs 中的替换字符串

Linux xargs命令详解

字符串的整数编码并将其用作决策树(sklearn)的输入是不是会使分割属性离散或连续?

[白开水]-shell-xargs知识总结-知识点

Linux下使用xargs将多行文本转换成一行并用tr实现逗号隔开