Text-Processing

用 sed 替換匹配後的字元

  • September 16, 2019

我有一個字元串:

172.16.1.5] "80 EE 73 2F 0B 40

我需要] "用冒號替換之後的所有空格。目前使用sed -r 's/[ ]+/:/g'我得到的輸出172.16.1.5]:"80:EE:73:2F:0B:40:,但是我需要在括號後保留第一個空格。

如何替換一個字元的所有實例,但只能在使用 sed 匹配之後?

有不同的方法可能。

一個條件循環,一次替換一個空格:

sed -e :1 -e 's/\(\] .*\) /\1:/; t1'

保存前綴,刪除它,替換,恢復前綴:

sed '/\] /{ s//&\
/; h; s/.*\n//; s/ /:/g; H; g; s/\n.*\n//;}'

如果輸入不包含"] ".

你可以使用

echo '172.16.1.5] "80 EE 73 2F 0B 40' | sed -r 's/ +/:/g;s/\]:/\] /g'

具有

172.16.1.5] "80:EE:73:2F:0B:40

引用自:https://unix.stackexchange.com/questions/542063