sed -n 's/^potato:[[:space:]]*//p' file.txt
O Grepovi lze uvažovat jako o omezeném Sedovi nebo o Sedovi jako o zobecněném Grepovi. V tomto případě je Sed dobrý a lehký nástroj, který dělá to, co chcete – i když samozřejmě existuje několik dalších rozumných způsobů, jak to udělat.
grep -Po 'potato:\s\K.*' file
-P použít regulární výraz Perl
-o na výstup pouze shoda
\s aby odpovídala mezerě za potato:
\K vynechat zápas
.* aby odpovídal zbytku řetězce (řetězců)
Nebo použijte výrazy regulárního výrazu:grep -oP '(?<=potato: ).*' file.txt
grep 'potato:' file.txt | sed 's/^.*: //'
grep hledá jakýkoli řádek, který obsahuje řetězec potato: , pak pro každý z těchto řádků sed nahradí (s/// - nahradit) libovolný znak (.* ) od začátku řádku (^ ) až do posledního výskytu sekvence : (dvojtečka následovaná mezerou) s prázdným řetězcem (s/...// - nahraďte první část druhou částí, která je prázdná).
nebo
grep 'potato:' file.txt | cut -d\ -f2
Pro každý řádek, který obsahuje potato: , cut rozdělí řádek do více polí oddělených mezerou (-d\ - d =oddělovač, \ =znak mezery, něco jako -d" " by také fungovalo) a vytiskněte druhé pole každého takového řádku (-f2 ).
nebo
grep 'potato:' file.txt | awk '{print $2}'
Pro každý řádek, který obsahuje potato: , awk vytiskne druhé pole (print $2 ), která je ve výchozím nastavení oddělena mezerami.
nebo
grep 'potato:' file.txt | perl -e 'for(<>){s/^.*: //;print}'
Všechny řádky, které obsahují potato: jsou odesílány na řádek (-e ) Perl skript, který přebírá všechny řádky z stdin , pak pro každý z těchto řádků provede stejnou substituci jako v prvním příkladu výše a poté ji vypíše.
nebo
awk '{if(/potato:/) print $2}' < file.txt
Soubor je odeslán prostřednictvím stdin (< file.txt odešle obsah souboru pomocí stdin na příkaz vlevo) na awk skript, který pro každý řádek obsahující potato: (if(/potato:/) vrátí hodnotu true, pokud je regulární výraz /potato:/ odpovídá aktuálnímu řádku), vytiskne druhé pole, jak je popsáno výše.
nebo
perl -e 'for(<>){/potato:/ && s/^.*: // && print}' < file.txt
Soubor je odeslán prostřednictvím stdin (< file.txt , viz výše) na skript v Perlu, který funguje podobně jako výše uvedený, ale tentokrát také zajišťuje, že každý řádek obsahuje řetězec potato: (/potato:/ je regulární výraz, který odpovídá, pokud aktuální řádek obsahuje potato: , a pokud ano (&& ), poté pokračuje v aplikaci regulárního výrazu popsaného výše a vytiskne výsledek).