2013-04-04 4 views
1

Я пытаюсь уничтожить файл, а затем сохранить результаты в именованном канале, созданном с использованием mkfifo, который в конечном итоге будет использоваться в команде соединения. Я видел много примеров использования mkfifo для gzip-вещей, но почти ничего не делал при запуске в этом типе сценария. Обзор моей проблемы:gunzip с mkfifo в bash

Получите содержимое двух * .gz файлов, не снимая их на диск. Для этого захватите поток gunzip -c * .gz (здесь я хочу использовать именованный канал для работы в качестве файла, содержащего содержимое потока). Возьмите два именованных канала и выполните соединение с ними. Упрощенная идея в UNIX код вроде как ...

mkfifo pipe1 
mkfifio pipe2 

gunzip -c fileA.gz > pipe1 & 
gunzip -c fileB.gz > pipe2 & 

join pipe1 pipe2 

rm pipe1 pipe2 

Любые рекомендации будут оценены

+0

Что вы хотите сказать? Не работает ли этот скрипт (кроме опечатки 'mkfifio') или что? –

ответ

1

Вы на самом деле не нужно именованные каналы для этого. У Bash есть специальный синтаксис, который может сделать это в одной команде:

join <(gunzip -c fileA.gz) <(gunzip -c fileB.gz) 
+0

На стороне примечания относительно этого синтаксиса ... есть способ, которым я могу захватить значения из строк с ружьем, когда они приходят, чтобы сделать сравнение? – gjw80