Ich habe ein kleines Problem damit, die Ausgabe von egrep zu reduzieren. Ich habe ausgegeben wie:
%Vor%Ich möchte das "From:" ausschneiden (im Wesentlichen das "First Last" lassen).
Ich habe es versucht
%Vor%aber die Ausgabe ist nur eine Reihe von Leerzeilen.
Ich würde jede Hilfe zu schätzen wissen.
Hier ist der vollständige Code, den ich verwenden möchte, wenn er hilft:
%Vor%HINWEIS: Ich habe den egrep-Teil des Codes bereits getestet und funktioniert wie erwartet.
Die Befehlszeilen cut
in Ihrer Frage geben Doppelpunkt-getrennte Felder an und möchten, dass die Ausgabe nur aus Feld 7 besteht; Da es in Ihrer Eingabe kein 7. Feld gibt, ist das Ergebnis nicht das, was Sie beabsichtigen.
Da das Präfix "Von:" in allen Zeilen identisch zu sein scheint, können Sie einfach ab dem 7. Zeichen abschneiden:
%Vor%und erhalten Sie das gewünschte Ergebnis.
Hier ist ein Bash-One-Liner:
%Vor%Siehe: Umgang mit Positionsparametern unter wiki.bash-hackers.org
Sie waren wirklich nah dran.
Ich denke, Sie müssen nur ":" durch "" als Trennzeichen ersetzen und "-" nach der "7" hinzufügen: so:
%Vor%Ich habe getestet und funktioniert ziemlich gut.
cut selbst ist ein sehr praktisches Werkzeug in bash
cut -d (Trennzeichen) -f (Felder, die Sie ausgeben möchten)
Ein einzelnes Feld wird direkt als -f 3 angegeben, Der Bereich der Felder kann als -f 5-9
ausgewählt werdenAlso in Ihrem Fall Code wäre dies
egrep '^ Von:' $ file | schneiden -d \ -f 2-3
Das Trennzeichen ist hier Leerzeichen und kann mit einem \
maskiert werden-f 1 entspricht "From" und 2-3 entspricht "First Last"