Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用作agrep输入的xargs字符串_Grep_Xargs_Zcat_Agrep - Fatal编程技术网

用作agrep输入的xargs字符串

用作agrep输入的xargs字符串,grep,xargs,zcat,agrep,Grep,Xargs,Zcat,Agrep,伙计们,我正在使用xargs来传递agrep的输入 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”中重

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

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
并且您要为以下内容创建文件b.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并行:

wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem
观看GNU Parallel的介绍视频,了解更多信息: