删除一行中的第 N 个指定字符

删除一行中的第 N 个指定字符

我有一个日志文件,其中包含如下行:

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

我需要删除仅有的第三个':' 在所有行上,这样结果将是:

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

答案1

正面:

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

答案2

第三个':'后面是空格,这使得它与其他的不同!

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

答案3

awk 解决方案:

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

答案4

长版本(使用一种方法,当一个人感到疲倦并且不想想太多时非常有用......):

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

相关内容