質問: ### 環境・やりたいこと ■環境 OSはcentos7です。 ■やりたいこと 特定のファイル(/etc/sysconfig/network-scripts/ifcfg-eth0)のipアドレスの変更をしたいです。 以下のように、第3オクテットの94を1に変更します。 ``` IPADDR=192.168.94.131 (変更前) ↓↓↓↓ IPADDR=192.168.1.131 (変更後) ``` ただし変更する対象が 192.168.94.1~192.168.94.254と複数あるので、 sedで簡単にできる方法を教えてください。 ``` [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 #・・・(省略)・・・ DEVICE=eth0 TYPE=Ethernet IPADDR=192.168.94.131 #特定のオクテットのみを変更したい #IPADDR=192.168.1.131 NETMASK=255.255.255.0 GATEWAY=192.168.94.2 DEFROUTE=yes #・・・(省略)・・・ ``` ### コマンド 考えたのは以下のようなコマンドなのですが、もっといい方法があれば、ご教示ください。 ``` sed -i 's/\(IPADDR=[0-9]\+\.[0-9]\+\.\)94\(\.[0-9]\+\)/\11\2/g' /etc/sysconfig/network-scripts/ifcfg-eth0 ```
回答: いい方法ではないですが、もうちょっとシンプルに書けるかな、と思いました。 変更する対象が192.168.94.1~192.168.94.254とのことですので、 第1、第2オクテットも固定されているので、その部分の複数マッチは不要かと思います。 ですので、下のようにすればちょっとシンプルになります。 ``` s/\(IPADDR=192.168.\)94\(\.[0-9]\+\)/\11\2/g ```