Mit sed Zeichen bis bis zu einem String löschen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
cray23kl
Beiträge: 272
Registriert: 19.04.2005 15:14:23
Lizenz eigener Beiträge: GNU General Public License

Mit sed Zeichen bis bis zu einem String löschen

Beitrag von cray23kl » 05.09.2009 16:21:09

Hallo,

ich möchte gerne die Ausgabe von ping etwas auseinanderpflücken.

Das hier ist die Ausgabe:

Code: Alles auswählen

# ping rechner.de -f -c 100         
PING rechner.de (141.52.167.71) 56(84) bytes of data.
 
--- scchpblade09a.fzk.de ping statistics ---
100 packets transmitted, 100 received, 0% packet loss, time 73ms
rtt min/avg/max/mdev = 0.097/0.103/0.149/0.008 ms, ipg/ewma 0.740/0.099 ms
Ich bräuchte die Werte von time und von rtt min/avg/max/mdev. Mit dem extrahieren des time-Werts tue ich mir schon schwer.

Die richtige Zeile bekomme ich so:

Code: Alles auswählen

# ping scchpblade09a -f -c 100 | grep packets 
100 packets transmitted, 100 received, 0% packet loss, time 45ms
Nun müssen noch die Zeichen vom Anfang der Zeile bis "time " mit sed gelöscht werden.

Wie kann man das machen? Vom Anfang der Zeile bis zum Auftreten eines Stirngs die Zeichen (incl. den String) löschen?

Viele Grüße
Christian

Benutzeravatar
pinguino
Beiträge: 147
Registriert: 23.01.2007 23:11:46

Re: Mit sed Zeichen bis bis zu einem String löschen

Beitrag von pinguino » 05.09.2009 16:49:45

Für "time" wäre es so:

Code: Alles auswählen

# ping scchpblade09a -f -c 100 |  grep packets  |  awk -F, '{print $NF}'
Gruß

Pinguino

>>Nota bene<<

123456
Beiträge: 6126
Registriert: 08.03.2003 14:07:24

Re: Mit sed Zeichen bis bis zu einem String löschen

Beitrag von 123456 » 05.09.2009 16:57:14

oder so:

Code: Alles auswählen

ping scchpblade09a -f -c 100 | grep packets  |cut -d " " -f 10

Benutzeravatar
cray23kl
Beiträge: 272
Registriert: 19.04.2005 15:14:23
Lizenz eigener Beiträge: GNU General Public License

Re: Mit sed Zeichen bis bis zu einem String löschen

Beitrag von cray23kl » 05.09.2009 17:04:04

Hallo,

die Lösung mit dem cut ist super! :D

Danke!!!

Viele Grüße
Christian

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Mit sed Zeichen bis bis zu einem String löschen

Beitrag von Meillo » 05.09.2009 17:20:10

pinguino hat geschrieben:Für "time" wäre es so:

Code: Alles auswählen

# ping scchpblade09a -f -c 100 |  grep packets  |  awk -F, '{print $NF}'
Wenn man nach `grep' mit `awk' bestimmte Felder ausgibt, dann kann man das greppen awk überlassen. Ich nenne das mal ``grep-awk-fusion''. ;-)

Code: Alles auswählen

... | grep foo | awk '{ print $1 }'
ist gleich

Code: Alles auswählen

... | awk '/foo/ { print $1 }'
Hier ein Ansatz von mir:

Code: Alles auswählen

# ping scchpblade09a -f -c 100 |  awk '
/^[0-9]* packets/ { sub(/.*time /, ""); print }
/^rtt/ { print $4 }
'
Use ed once in a while!

Antworten