如何用sed替换区域文件中的IP
How to replace IP in zone file with sed
我正在尝试使用 sed 替换区域文件中特定记录的 IP。使用下面的示例,我想替换 server1 的 IP。我在更换 IP 而不是整条线路时遇到问题。任何人都可以帮忙,因为我现在对 sed 完全不知所措。
$ORIGIN example.com
$TTL 86400
@ IN SOA dns1.example.com. hostmaster.example.com. (
2001062501 ; serial
21600 ; refresh after 6 hours
3600 ; retry after 1 hour
604800 ; expire after 1 week
86400 ) ; minimum TTL of 1 day
IN NS dns1.example.com.
IN NS dns2.example.com.
IN MX 10 mail.example.com.
IN MX 20 mail2.example.com.
IN A 10.0.1.5
server1 IN A 10.0.1.5
server2 IN A 10.0.1.7
dns1 IN A 10.0.1.2
dns2 IN A 10.0.1.3
您可以使用
IP="1.2.3.4"
sed "/^server1/s/[^[:space:]]\+$/$IP/" file
如果您对更改没问题,可以通过 -i
来更改 中的文件 :
IP="1.2.3.4"
sed -i "/^server1/s/[^[:space:]]\+$/$IP/" file
顺便说一句,如果行尾可能出现 space,我建议这样做:
sed "/^server1/s/[^[:space:]]\+[[:space:]]\{0,\}$/$IP/" file
sed -r "s/^(server1.*)([0-9]+[.][0-9]+[.][0-9]+.[0-9]+[ ]*)$/$NEWIP/" my_file
我正在尝试使用 sed 替换区域文件中特定记录的 IP。使用下面的示例,我想替换 server1 的 IP。我在更换 IP 而不是整条线路时遇到问题。任何人都可以帮忙,因为我现在对 sed 完全不知所措。
$ORIGIN example.com
$TTL 86400
@ IN SOA dns1.example.com. hostmaster.example.com. (
2001062501 ; serial
21600 ; refresh after 6 hours
3600 ; retry after 1 hour
604800 ; expire after 1 week
86400 ) ; minimum TTL of 1 day
IN NS dns1.example.com.
IN NS dns2.example.com.
IN MX 10 mail.example.com.
IN MX 20 mail2.example.com.
IN A 10.0.1.5
server1 IN A 10.0.1.5
server2 IN A 10.0.1.7
dns1 IN A 10.0.1.2
dns2 IN A 10.0.1.3
您可以使用
IP="1.2.3.4"
sed "/^server1/s/[^[:space:]]\+$/$IP/" file
如果您对更改没问题,可以通过 -i
来更改 中的文件 :
IP="1.2.3.4"
sed -i "/^server1/s/[^[:space:]]\+$/$IP/" file
顺便说一句,如果行尾可能出现 space,我建议这样做:
sed "/^server1/s/[^[:space:]]\+[[:space:]]\{0,\}$/$IP/" file
sed -r "s/^(server1.*)([0-9]+[.][0-9]+[.][0-9]+.[0-9]+[ ]*)$/$NEWIP/" my_file