Как использовать grep -f только с переменными в качестве входных данных, как в echo "pattern" | grep -f - <<< $ var? - PullRequest
0 голосов
/ 24 января 2019

Работает следующий синтаксис кода:

echo "pattern_list" | grep -f - "/path/to/file"

, а также

grep -f "/path/to/pattern/file" <<< $variable_that_holds_file_content

но возможно ли, что grep -f работает только с переменными?

Потому что

echo "pattern_list" | grep -f - <<< $variable_that_holds_file_content

не работает.

Не могли бы вы показать мне, как? THX!

1 Ответ

0 голосов
/ 24 января 2019

Вот решение (не проверено):

grep -f <( echo "pattern_list"  )  <<< $variable_that_holds_file_content

Проблема с вашим третьим выражением заключается в том, что вы говорите grep читать stdin (то есть -f -) для файла шаблона И содержимое файла наSTDIN.Вы не можете сделать оба.Если вы используете stdin для шаблонов, вам нужно иметь открытые файлы grep (это аргументы) для анализа содержимого (вот почему ваш первый пример работает).Или вы можете сделать так, чтобы grep открыл файл, содержащий шаблоны и проанализировал входные данные из stdin (вот почему работает второй случай).

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