Я ищу простой / элегантный способ grep файла, чтобы каждая возвращаемая строка должна соответствовать каждой строке файла шаблона.
С входным файлом
acb
bc
ca
bac
И файлом шаблона
a
b
c
Команда должна вернуть
acb
bac
Я пытался сделать это с grep -f
но возвращается, если он соответствует одному шаблону в файле (и не всем).Я также пробовал что-то с рекурсивным вызовом perl -ne
(передняя строка файла шаблона, вызовите perl -ne для файла поиска и попытайтесь выполнить поиск на месте), но я не смог заставить синтаксический анализатор принять вызов perlот Perl, так что не уверен, что это возможно.
Я думал, что, возможно, есть более элегантный способ сделать это, поэтому я решил проверить.Спасибо!
=== ОБНОВЛЕНИЕ ===
Спасибо за ваши ответы до сих пор, извините, если я не ясно, но я надеялся только на результат в одну строку (создание сценариядля этого кажется слишком тяжелым, просто хотел что-то быстрое).Я думал об этом еще немного, и до сих пор придумал это:
perl -n -e 'chomp($_); print " | grep $_ "' pattern | xargs echo "cat input"
, который печатает
cat input | grep a | grep b | grep c
Эта строка - то, что я хочу выполнить, мне просто нужнокак-то выполнить это сейчас.Я пробовал дополнительный канал для eval
perl -n -e 'chomp($_); print " | grep $_ "' pattern | xargs echo "cat input" | eval
Хотя это дает сообщение:
xargs: echo: terminated by signal 13
Я не уверен, что это значит?