从文件替换下一行的sed命令是什么。 我使用下面的sed命令来替换一行,但它没有用
sed -i 's/^fixed-address 135.250.187.128;\nfilename "vxrom.pxe.mg.latest";$/fixed-address 135.250.187.128;\nfilename "vxrom.pxe.mg/' dhcpd.txt
输入:
host sim127 {hardware ethernet 00:25:90:78:32:B4; fixed-address 135.250.187.127; filename "vxrom.pxe.mg.latest"; next-server 135.250.186.9; }
host sim128 {hardware ethernet 00:25:90:78:2E:FC; fixed-address 135.250.187.128; filename "vxrom.pxe.mg.latest"; next-server 135.250.186.9; }
输出:
host sim127 {hardware ethernet 00:25:90:78:32:B4; fixed-address 135.250.187.127; filename "vxrom.pxe.mg.8_0"; next-server 135.250.186.9; }
host sim128 {hardware ethernet 00:25:90:78:2E:FC; fixed-address 135.250.187.128; filename "vxrom.pxe.mg.latest"; next-server 135.250.186.9; }
答案 0 :(得分:1)
sed
在线上运作。但是您的表达式包含换行符\n
。因此,您必须使sed
使用多行,并在换行符中中止评估,例如described here。所以尝试使用前缀
在:一个; N; $ BA;
sed
之前的's/.../.../g'
表达式中。我还将.
替换为其转义序列\.
并附加了g
,以便替换所有匹配项。结果如下:
sed -i ':a;N;$!ba;s/fixed-address\n135.250.187.128;\sfilename\s"vxrom.pxe.mg.latest";/fixed-address 135.250.187.128;\ filename "vxrom.pxe.mg";/g' dhcpd.txt