刪除一行中的第 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/'

相關內容