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
他の実行可能ファイルを呼び出さずに実行されることを除いて、他の場所で行われた操作と本質的に同じです。