行からN番目に指定した文字を削除します

行からN番目に指定した文字を削除します

次のような行を含むログ ファイルがあります。

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

削除する必要があるのみ3番目:' をすべての行に記述すると、結果は次のようになります。

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

答え1

POSIX: 正しい:

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

答え2

3 番目の ':' の後にスペースが続くため、他のものとは異なります。

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

答え3

awk ソリューション:

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

答え4

長いバージョン(疲れていてあまり考えたくないときに非常に便利な方法を使用):

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

関連情報