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.