xargs 字符串用作 agrep 的输入



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

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 中使用的最后一个"字符串"是不合适的。有关此的任何建议都将非常有帮助。

目前还不完全清楚你想要什么。我假设您有一个文件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 并行的介绍视频以了解更多信息: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

相关内容

  • 没有找到相关文章

最新更新