grep 'potato:' file.txt | sed 's/^.*: //'
grepszuka dowolnego wiersza zawierającego ciąg potato:, a następnie dla każdego z tych wierszy sedzastępuje ( s///- podstawia) dowolny znak ( .*) od początku wiersza ( ^) do ostatniego wystąpienia ciągu :(dwukropek, po którym następuje spacja) pustym string ( s/...//- zastąp pierwszą część drugą częścią, która jest pusta).
lub
grep 'potato:' file.txt | cut -d\ -f2
Dla każdej linii, która zawiera potato:, cutpodzieli linię na wiele pól oddzielonych spacją ( -d\- d= separator, \= znak spacji ze znakiem ucieczki, coś podobnego -d" "też by zadziałało) i wypisze drugie pole każdej takiej linii ( -f2).
lub
grep 'potato:' file.txt | awk '{print $2}'
Dla każdego wiersza, który zawiera potato:, awkwypisze drugie pole ( print $2), które jest domyślnie rozdzielone spacjami.
lub
grep 'potato:' file.txt | perl -e 'for(<>){s/^.*: //;print}'
Wszystkie wiersze, które zawierają, potato:są wysyłane do skryptu Perl inline ( -e), który pobiera wszystkie wiersze z , a następnie dla każdego z tych wierszy dokonuje takiego samego podstawienia jak w pierwszym przykładzie powyżej, a następnie drukuje go.stdin
lub
awk '{if(/potato:/) print $2}' < file.txt
Plik jest wysyłany przez stdin( < file.txtwysyła zawartość pliku przez stdinpolecenie po lewej stronie) do awkskryptu, który dla każdego wiersza zawierającego potato:( if(/potato:/)zwraca wartość true, jeśli wyrażenie regularne /potato:/pasuje do bieżącego wiersza), wypisuje drugie pole, zgodnie z opisem powyżej.
lub
perl -e 'for(<>){/potato:/ && s/^.*: // && print}' < file.txt
Plik jest wysyłany za pośrednictwem stdin( < file.txtpatrz wyżej) do skryptu Perl, który działa podobnie do powyższego, ale tym razem upewnia się również, że każda linia zawiera ciąg potato:( /potato:/jest to wyrażenie regularne, które pasuje, jeśli bieżąca linia zawiera potato:, robi ( &&), a następnie przechodzi do zastosowania wyrażenia regularnego opisanego powyżej i wyświetla wynik).
awk '$1 ~ /potato/ { print $2 }' file.txt.