grep 'potato:' file.txt | sed 's/^.*: //'
grepшукає будь-який рядок, що містить рядок potato:, а потім для кожного з цих рядків sedзамінює ( s///- substitute) будь-який символ ( .*) від початку рядка ( ^) до останнього входження послідовності :(двокрапки, після якої пробіл) пустим рядок ( 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:/)повертає true, якщо регулярний вираз /potato:/відповідає поточному рядку), друкує друге поле, як описано вище.
або
perl -e 'for(<>){/potato:/ && s/^.*: // && print}' < file.txt
Файл надсилається через stdin( < file.txtдив. Вище) скрипту Perl, який працює аналогічно наведеному вище, але цього разу він також переконується, що кожен рядок містить рядок potato:( /potato:/це регулярний вираз, який відповідає, якщо поточний рядок містить potato:, і, якщо він робить ( &&), потім продовжує застосовувати регулярний вираз, описаний вище, і друкує результат).
awk '$1 ~ /potato/ { print $2 }' file.txt.