grep 'potato:' file.txt | sed 's/^.*: //'
grep
sucht nach einer Zeile, die die Zeichenfolge enthält potato:
, und sed
ersetzt ( s///
- ersetzt) für jede dieser Zeilen jedes Zeichen ( .*
) vom Zeilenanfang ( ^
) bis zum letzten Auftreten der Sequenz :
(Doppelpunkt gefolgt von Leerzeichen) durch das Leerzeichen Zeichenfolge ( s/...//
- Ersetzen Sie den ersten Teil durch den zweiten Teil, der leer ist).
oder
grep 'potato:' file.txt | cut -d\ -f2
Teilen Sie für jede Zeile, die enthält potato:
, cut
die Zeile in mehrere durch Leerzeichen begrenzte Felder auf ( -d\
- d
= Trennzeichen, \
= Leerzeichen, so etwas -d" "
hätte auch funktioniert) und drucken Sie das zweite Feld jeder solchen Zeile aus ( -f2
).
oder
grep 'potato:' file.txt | awk '{print $2}'
Gibt für jede Zeile, die enthält potato:
, awk
das zweite Feld ( print $2
) aus, das standardmäßig durch Leerzeichen getrennt ist.
oder
grep 'potato:' file.txt | perl -e 'for(<>){s/^.*: //;print}'
Alle darin enthaltenen Zeilen potato:
werden an ein inline ( -e
) - Perl- Skript gesendet, aus dem alle Zeilen stammen stdin
. Anschließend wird für jede dieser Zeilen dieselbe Ersetzung wie im ersten Beispiel oben durchgeführt und anschließend gedruckt.
oder
awk '{if(/potato:/) print $2}' < file.txt
Die Datei wird über stdin
( < file.txt
sendet den Inhalt der Datei über stdin
den Befehl auf der linken Seite) an ein awk
Skript gesendet , das für jede Zeile, die enthält potato:
( if(/potato:/)
gibt true zurück, wenn der reguläre Ausdruck /potato:/
mit der aktuellen Zeile übereinstimmt), das zweite Feld wie beschrieben druckt über.
oder
perl -e 'for(<>){/potato:/ && s/^.*: // && print}' < file.txt
Die Datei wird über stdin
( < file.txt
siehe oben) an ein Perl-Skript gesendet , das ähnlich wie oben funktioniert. Diesmal wird jedoch auch sichergestellt, dass jede Zeile die Zeichenfolge enthält potato:
( /potato:/
ein regulärer Ausdruck, der übereinstimmt, wenn die aktuelle Zeile enthält potato:
, und wenn es tut ( &&
), wendet dann den oben beschriebenen regulären Ausdruck an und druckt das Ergebnis).
awk '$1 ~ /potato/ { print $2 }' file.txt
.