sedを使用して一致する文字を置き換える

sedを使用して一致する文字を置き換える

文字列があります。

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を使用して一致した後にのみ、文字のすべてのインスタンスをどのように置き換えることができますか?

ベストアンサー1

さまざまなアプローチがあります。

条件付きループ、一度に1つずつ交換:

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

プレフィックスの保存、プレフィックスの削除、置換、プレフィックスの復元:

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

入力に代替項目が含まれていない場合、どちらも何もしません"] "

おすすめ記事