2012-04-06 15 views
1

Die Eingabedatei sieht wie folgt zu entfernen:sed das dritte Auftreten eines Trenn

Jan 23 14:57:16 TCP 217.79.188.21:80 in 

Ich habe versucht:

sed 's/:[^:]* in/ in/' 

Aber es hält Entfernung: 16 statt Entfernen des: 80

Wie kann ich das beheben?

+0

Wenn es 'ist: 80' Auftreten jedes Mal, benutzen Sie einfach ': 80 in' für sed Bedingung – hjpotter92

+5

Für mich funktioniert es einfach: $ echo" Jan 23 14:57:16 TCP 217.79.188.21:80 in "| sed 's /: [^:] * in/in /' ergibt Jan 23 14:57:16 TCP 217.79.188.21 in – rednaw

+0

funktioniert auch für mich, Formel ist korrekt – wisent

Antwort

0

Dies könnte für Sie arbeiten:

echo "Jan 23 14:57:16 TCP 217.79.188.21:80 in" | sed 's/:..//3' 
Jan 23 14:57:16 TCP 217.79.188.21 in 

oder (wahrscheinlicher als Portnummer kann eine beliebige Anzahl sein):

echo "Jan 23 14:57:16 TCP 217.79.188.21:80 in" | sed 's/:[^ ]*//2' 
Jan 23 14:57:16 TCP 217.79.188.21 in 
0

Versuchen Sie, die IP und den Port zu vergleichen, und ersetzen Sie sie durch die nur die IP.

+0

Ich hatte einen Tippfehler in meiner awk-Anweisung. Sorry, Leute, Benutzerfehler. Danke für die Antworten trotzdem. – Jim

+0

Bitte editiere deine Frage, um anzuzeigen, dass dieser Thread aufgelöst wurde, sonst müssen die Leute alle Nachrichten durchlesen, um herauszufinden, dass es nichts zu helfen gibt. Viel Glück. – shellter

0
sed -E -e 's/:[[:digit:]]{1,3} in/ in/' 
Verwandte Themen