2016-12-07 2 views
0

ich von wireshark sauberen Ausgabe erhalten müssen entfernen, aber vor kurzem bemerkte ich, dass ich immer Ausgänge worden bin, wo mein Schnitt Befehl nicht mehrWie alles vor einer bestimmten Zeichenfolge

Daten von wireshark funktioniert

C.'¢¢@)ù¨.fEo³@(@¹³³÷÷P*,§ýý {P¹'GET /2015/dec/alltracks/playlist.m3u8 

Ich verwendete cut -f2 -d" ", aber jetzt merke ich, dass einige Einträge mit mehreren Leerzeichen kommen, so dass mein Befehl fehlschlägt.

Wie würde ich alles vor GET loswerden, einschließlich des Wortes GET? Das Ziel ist, zu erhalten nur /2015/dec/alltracks/playlist.m3u8

+0

Dies scheint ein TCP/IP-Header zu sein. Wenn sich jemand von 10.47.45.54 verbindet, würde das Wort "GET" in der Mitte des binären Mülls erscheinen. Sicherlich hat wireshark eine Option, um den Header zu überspringen oder die Ausgabe auf andere Weise zu formatieren, ohne dass Sie versuchen, Netzwerkprotokolle als Text zu analysieren. –

Antwort

1

Sie dies mit dem folgenden regulären Ausdruck tun können

.*GET

Wo .* alle Zeichen erkennt (das * bedeutet Null oder mehr) und GET erkennt, was Sie wollen mit der führende Raum, so würde der Ausgang sein, was Sie

sed "s/.*GET //g" 

wünschen würden wir ersetzen, was wir mit nichts finden (//).

s ist für Ersatz während g für global ist (die, je nach Fall können oder auch nicht notwendig sein, auch wenn ich Sie es verwenden würde empfehlen, wenn Sie bereit sind, mehr zu ändern, als eine Linie.

0

Verwenden GNU grep in PCRE-mode aktiviert durch -P flag und -o flag nur das passende Wort zu drucken.

grep -Po ".*GET \K(.*)" input-file 
/2015/dec/alltracks/playlist.m3u8 

Verwenden eines perl regEx

perl -nle 'print "$1" if /.*GET (.*)/' input-file 
/2015/dec/alltracks/playlist.m3u8 
Verwandte Themen