数字の3番目の文字を別の文字に置き換える方法

数字の3番目の文字を別の文字に置き換える方法

IPSパラメータには差分IPアドレスが含まれています。

IPS="192.9.200.12-14 172.17.200.12-89 12.21.1.10-25 127.0.0.1-127"

IPアドレスの3番目の「。」数字を「、」に変更したい。

またはを通じてsedこれを達成する方法は何ですかawk

例:

echo $IPS | sed ……..

要求された出力

192.9.200,12-14 172.17.200,12-89 12.21.1,10-25 127.0.0,1-127

ベストアンサー1

シェルから:

IPS='192.9.200.12-14 172.17.200.12-89 12.21.1.10-25 127.0.0.1-127'
echo $(IFS=\ .; printf %s.%s.%s,%s\  $IPS)

出力

192.9.200,12-14 172.17.200,12-89 12.21.1,10-25 127.0.0,1-127

しかし、より良い方法(実際に配列を使用できる方法)は、配列を関数に変換することです。

iprng() (IFS=.;for ip do printf %s.%s.%s,%s\\n $ip; done)
iprng $IPS

出力

192.9.200,12-14
172.17.200,12-89
12.21.1,10-25
127.0.0,1-127

または...

echo $(iprng $IPS) 

出力

192.9.200,12-14 172.17.200,12-89 12.21.1,10-25 127.0.0,1-127

見てわかるように、単純でawk他の実行可能ファイルを呼び出さずに実行されることを除いて、他の場所で行われた操作と本質的に同じです。

おすすめ記事