Как передать многострочный вывод функции в grep? - PullRequest
1 голос
/ 27 сентября 2011

Я новичок в UNIX и у меня проблемы с тем, что, вероятно, очень простая концепция. Я хотел бы взять выходные данные awk, предназначенные для возврата одного столбца данных (в данном случае это пара строк, содержащих WWN FC), и использовать его в качестве параметра поиска в grep так же, как я использовал бы файл содержащий столбец.

Моей первой мыслью было просто напечатать grep -f awk {'print $ 3'} myfile myotherfile

Очевидно, это не сработало. Я знаю, что мог бы сделать это просто с помощью двух команд и промежуточного файла (вывод моего awk с> в новый файл и использование с ним grep -f), но я хотел бы знать, есть ли способ сделать это без добавления файлов.

Справочная информация: я использую AIX 5.3 и bash

Ответы [ 2 ]

1 голос
/ 27 сентября 2011

Вы можете использовать отличный $< bash идиома bash, чтобы заменить аргумент имени файла выводом указанной команды.

fgrep -f <(awk '{print $3}' myfile) myotherfile
1 голос
/ 27 сентября 2011

Обычная идиома, которая работает с GNU grep (не знаю, как работает AIX grep) - это использование - в качестве спецификации для stdin. Так что в вашем случае, если я правильно интерпретировал команду, вы бы использовали:

awk {'print $3'} myfile | grep -f - myotherfile

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...