Von Spalte zu Ende der Zeile abgeschnitten

8

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.

    
SlashTag 17.10.2013, 21:01
quelle

7 Antworten

6

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.

    
Aaron Miller 17.10.2013, 21:04
quelle
5

Das Argument -f steht für welche Felder. Da es in der Zeile nur einen : gibt, gibt es nur zwei Felder. Wenn Sie also -f 7 in -f 2- ändern, erhalten Sie das gewünschte Ergebnis. Trotzdem mit einem führenden Platz.

    
grim 17.10.2013 21:04
quelle
5

Sie können die Teile egrep und cut in einem Befehl mit sed kombinieren:

%Vor%

sed -n deaktiviert das Drucken standardmäßig, und dann verwende ich p im Befehl sed explizit, um die gewünschten Zeilen zu drucken.

    
Alok-- 17.10.2013 21:08
quelle
3

Sie können sed:

verwenden %Vor%

ODER awk:

%Vor%

ODER grep -oP

%Vor%     
anubhava 17.10.2013 21:06
quelle
0

Hier ist ein Bash-One-Liner:

%Vor%

Siehe: Umgang mit Positionsparametern unter wiki.bash-hackers.org

    
kenorb 10.04.2016 02:57
quelle
0

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.

    
quelle
0

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 werden

Also 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"

    
Akhil Maskery 11.01.2018 05:35
quelle

Tags und Links