grep 'potato:' file.txt | sed 's/^.*: //'
grep
ищет любую строку, содержащую строку potato:
, затем для каждой из этих строк sed
заменяет ( s///
- заменяет) любой символ ( .*
) от начала строки ( ^
) до последнего вхождения последовательности :
(двоеточие, за которым следует пробел) пустым строка ( s/...//
- замените первую часть второй частью, которая пуста).
или же
grep 'potato:' file.txt | cut -d\ -f2
Для каждой строки , которая содержит potato:
, cut
разделит линию на несколько полей , разделенных пробелами ( -d\
- d
= разделитель \
= спасся пробел, что - то вроде -d" "
бы и работал) и напечатать второе поле каждой такой линии ( -f2
).
или же
grep 'potato:' file.txt | awk '{print $2}'
Для каждой строки , которая содержит potato:
, awk
будет печатать второе поле ( print $2
) , который ограничен по умолчанию пробелов.
или же
grep 'potato:' file.txt | perl -e 'for(<>){s/^.*: //;print}'
Все содержащиеся строки potato:
отправляются в сценарий inline ( -e
) Perl, который берет все строки из stdin
, затем для каждой из этих строк выполняет ту же замену, что и в первом примере выше, а затем печатает ее.
или же
awk '{if(/potato:/) print $2}' < file.txt
Файл отправляется через stdin
( < file.txt
отправляет содержимое файла через stdin
команду слева) в awk
сценарий, который для каждой содержащейся строки potato:
( if(/potato:/)
возвращает истину, если регулярное выражение /potato:/
соответствует текущей строке) печатает второе поле, как описано выше.
или же
perl -e 'for(<>){/potato:/ && s/^.*: // && print}' < file.txt
Файл отправляется через stdin
( < file.txt
см. Выше) в сценарий Perl, который работает аналогично приведенному выше, но на этот раз он также проверяет, что каждая строка содержит строку potato:
( /potato:/
это регулярное выражение, которое соответствует, если текущая строка содержит potato:
, и, если он выполняет ( &&
), затем применяет регулярное выражение, описанное выше, и печатает результат).
awk '$1 ~ /potato/ { print $2 }' file.txt
.