Sed:查找并替换整个行[Regex]
时间:2020-01-09 10:46:07 来源:igfitidea点击:
我的服务器托管在云中:
我在squid.conf文件中有以下一行。
acl verizonfios src 1.2.3.4
我的ISP会每两周强制更改IP地址。
如何用一个新的IP替换它们
acl verizonfios src 4.5.6.7
如何使用sed和ssh将以acl verizonfios开头的行替换为新的IP地址?
sed语法如下,以匹配以acl verizonfios开头的行并替换整行:
sed -i 's/find/replace/' file sed -i 's/^acl verizonfios.*/acl verizonfios src 4.5.6.7/' file
在此示例中,将IP地址替换为192.1.2.3:
sed -i 's/^acl verizonfios.*/acl verizonfios src 192.1.2.3/' /etc/squid/squid.conf
您可以使用ssh执行sed命令:
ssh [email protected] sed -i 's/^acl verizonfios.*/acl verizonfios src 192.1.2.3/' /etc/squid/squid.conf ssh [email protected] /usr/sbin/squid -k reconfigure
示例脚本
#!/bin/bash # Author: theitroad <www.theitroad.local> - GPL v2.x+ # ------------------------------------------------ ## cloud server name ## _rserver="your.server.at.cloud" _ruser="root" ## Get your public IP ## _myip="$(/bin/curl ifconfig.me)" _cmd1="/bin/sed -i 's/^acl verizonfios.*/acl verizonfios src ${_myip}/' /etc/squid/squid.conf" _cmd2="/usr/sbin/squid -k reconfigure" ## connect to the remote box ## update the proxy server ## reload the proxy server /bin/ssh ${_ruser}@${_rserver} "$_cmd1" /bin/ssh ${_ruser}@${_rserver} "$_cmd2"