sed -n 's/^potato:[[:space:]]*//p' file.txt
Man kann sich Grep als eingeschränktes Sed oder Sed als verallgemeinertes Grep vorstellen. In diesem Fall ist Sed ein gutes, leichtgewichtiges Werkzeug, das tut, was Sie wollen – obwohl es natürlich auch mehrere andere vernünftige Möglichkeiten gibt, dies zu tun.
grep -Po 'potato:\s\K.*' file
 -P um einen regulären Perl-Ausdruck zu verwenden
 -o um nur die Übereinstimmung auszugeben
 \s um mit dem Leerzeichen nach potato: übereinzustimmen 
 \K um die Übereinstimmung wegzulassen
 .* um den Rest der Zeichenfolge(n) abzugleichen
 Oder verwenden Sie Regex-Zusicherungen:grep -oP '(?<=potato: ).*' file.txt 
grep 'potato:' file.txt | sed 's/^.*: //'
 grep sucht nach einer Zeile, die den String potato: enthält , dann für jede dieser Zeilen sed ersetzt (s/// - Ersatz) ein beliebiges Zeichen (.* ) vom Anfang der Zeile (^ ) bis zum letzten Auftreten der Sequenz : (Doppelpunkt gefolgt von Leerzeichen) durch die leere Zeichenfolge (s/...// - Ersetzen Sie den ersten Teil durch den zweiten Teil, der leer ist).
oder
grep 'potato:' file.txt | cut -d\   -f2
 Für jede Zeile, die potato: enthält , cut teilt die Zeile in mehrere Felder auf, die durch Leerzeichen getrennt sind (-d\ - d =Trennzeichen, \ =maskiertes Leerzeichen, so etwas wie -d" " hätte auch funktioniert) und das zweite Feld jeder solchen Zeile ausgeben (-f2 ).
oder
grep 'potato:' file.txt | awk '{print $2}'
 Für jede Zeile, die potato: enthält , awk druckt das zweite Feld (print $2 ), die standardmäßig durch Leerzeichen getrennt ist.
oder
grep 'potato:' file.txt | perl -e 'for(<>){s/^.*: //;print}'
 Alle Zeilen, die potato: enthalten werden an eine Inline gesendet (-e ) Perl-Skript, das alle Zeilen von stdin übernimmt , führt dann für jede dieser Zeilen dieselbe Ersetzung wie im ersten obigen Beispiel durch und gibt sie dann aus.
oder
awk '{if(/potato:/) print $2}' < file.txt
 Die Datei wird per stdin gesendet (< file.txt sendet den Inhalt der Datei über stdin zum Befehl auf der linken Seite) zu einem awk Skript, das für jede Zeile, die potato: enthält (if(/potato:/) gibt true zurück, wenn der reguläre Ausdruck /potato:/ entspricht der aktuellen Zeile), druckt das zweite Feld, wie oben beschrieben.
oder
perl -e 'for(<>){/potato:/ && s/^.*: // && print}' < file.txt
 Die Datei wird per stdin gesendet (< file.txt , siehe oben) zu einem Perl-Skript, das ähnlich wie das obige funktioniert, diesmal aber auch dafür sorgt, dass jede Zeile den String potato: enthält (/potato:/ ist ein regulärer Ausdruck, der passt, wenn die aktuelle Zeile potato: enthält , und falls ja (&& ), wendet dann den oben beschriebenen regulären Ausdruck an und gibt das Ergebnis aus).