awk
- язык сопоставления с образцом. grep
совершенно не нужно.
awk '/bar/{print $3}' foot.txt
делает то, что делает ваш пример.
Редактировать Исправлено немного после прочтения комментариев к предыдущему ответу (я ничего не знаю о dem
...):
Вы можете использовать system
вызов в awk с чем-то вроде:
awk '/bar/{cline="dem " $3; system(cline)}' foot.txt
но это породит экземпляр dem
для каждого обработанного символа. Очень неэффективно.
Итак, давайте станем умнее:
awk '/bar/{list = list " " $3;}END{cline="dem " list; system(cline)}' foot.txt
КСТАТИ - Не проверено, поскольку у меня нет dem
или вашего ввода.
Еще одна мысль: если вы собираетесь использовать формулировку xargs
, предлагаемую другими авторами, cut
вполне может быть более эффективным, чем awk
. Однако в этот момент вам снова понадобится grep
.