![刪除一行中的第 N 個指定字符](https://rvso.com/image/76440/%E5%88%AA%E9%99%A4%E4%B8%80%E8%A1%8C%E4%B8%AD%E7%9A%84%E7%AC%AC%20N%20%E5%80%8B%E6%8C%87%E5%AE%9A%E5%AD%97%E7%AC%A6.png)
我有一個日誌文件,其中包含如下行:
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/'