Сperl
$ cat ip.txt
abc def ghi 123 345 456
abc def def ghi 123 345 456
abc def def def ghi 123 345 456 1234
$ perl -lane 'print join " ", grep { /def|123/ } @F' ip.txt
def 123
def def 123
def def def 123 1234
$ perl -lane 'print join " ", grep { $_ eq "def" || $_ eq "123" } @F' ip.txt
def 123
def def 123
def def def 123
-lane
здесь -l
удалит новую строку из строки ввода и добавит ее обратно, когда используется print
, -a
автоматически разделит строку ввода на пробелы и сохранит результаты в массиве @F
, -n
будет перебирать строки ввода но не будет автоматически печатать строки после обработки и -e
позволяет предоставить сценарий Perl из командной строки grep { /def|123/ } @F
будет фильтровать все элементы массива @F
, если они содержат def
или 123
grep { $_ eq "def" || $_ eq "123" } @F
print join " "
вывести элементы, полученные из вывода grep
с пробелом в качестве разделителя