本文使用 /etc/hosts 大家都有的Host文件作例子,具体指令的参数可以使用 man 来查看
sed替换和删减
文件中存在多个localhost,想把 “localhost” 替换成 “localhost2”
1 | sed "s/localhost/localhost2/" /etc/hosts |
想删除 “127.0.0.1 localhost” 中的IP地址,代表从以127.0.0.1开头的行的,127.0.0.1的部分替换成空
1 | sed -E "s/^127.0.0.1//" /etc/hosts |
删除domain部分
1 | sed -E "s/localhost$//" /etc/hosts |
指定sed的作用范围
在替换localhost的时候,会误伤 ::1 localhost的部分,可以通过限定 address来避免
通过行号指定地址,只作用于第七行
1 | sed -E "7,7s/localhost//1" /etc/hosts |
通过内容来限定
1 | sed -E "/^127.0/,/^255.255/s/localhost//1" /etc/hosts |
sed连续执行命令
想先把 “127.0.0.1 localhost” 中localhost替换成 other localhost ,然后把 other local 替换成 net
因为第二部需要第一步的结果,可以通过sed连续指令,连续指令用分号分割
1 | sed -E "7,7s/localhost$/other localhost/;s/other local/net/" /etc/hosts |