Entfernt das N-te angegebene Zeichen aus einer Zeile

Entfernt das N-te angegebene Zeichen aus einer Zeile

Ich habe eine Protokolldatei mit Zeilen wie diesen:

06:06:48.531 9: 157 2492
06:06:49.331 10: 147 2812
...

Ich muss entfernennurder 3.:' in allen Zeilen, sodass das Ergebnis wäre:

06:06:48.531 9 157 2492
06:06:49.331 10 147 2812
...

Antwort1

POSIXLY:

sed -e 's/://3' <file

Antwort2

Auf das dritte ':' folgt ein Leerzeichen, was es von den anderen unterscheidet!

sed -i 's/: / /g' logfile

Antwort3

Eine awk-Lösung:

awk '{ print(gensub(/:/,"",3,$0)) }' logfile

Antwort4

Die Langfassung (mit einer Methode, die sehr nützlich sein kann, wenn man müde wird und nicht zu viel nachdenken möchte ...):

sed -e 's/\([^:]*\):\([^:]*\):\([^:]*\):/\1:\2:\3/'

verwandte Informationen