2012-06-21 4 views
0

Guys Я использую xargs передать вход для agrep.I я использую xargs как ниже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 

Моя цель agrep этот идентификатор запроса в другом файле " Файл B ". Поскольку этот файл застегнут на молнию, мне нужно использовать zcat, прежде чем делать agrep ... Но если я это сделаю, я получаю неправильные результаты. Последняя «строка», которую я использую в agrep, не подходит. Любые предложения относительно этого были бы весьма полезно.

ответ

0

Не совсем понятно, что вы хотите. Я предполагаю, что у вас есть файл, содержащий FiLea:

543214324 
512121221 
521212121 

и что вы хотите agrep FILEB.gz для:

RequestID=543214324 
RequestID=512121221 
RequestID=521212121 

FILEBB.gz является архивированная так что вам нужно zcat распаковать его, и вы не можете используйте zgrep, потому что вы зависите от функции, найденной только в agrep.

Использование GNU Параллельно вы можете сделать:

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

Одним из преимуществ делать это параллельно, что если FILEB.gz слишком большой, чтобы поместиться в памяти, то это будет убедиться, что искать параллельно таким образом избегая чтения FILEB.gz с диска для каждого поиска. Еще одно преимущество заключается в том, что вы можете использовать несколько ядер процессора, которые почти гарантированно имеют ваши компьютеры в эти дни.

Вы можете установить 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

 Смежные вопросы

  • Нет связанных вопросов^_^