Regex 替换文件中的值的sed命令是什么?

Regex 替换文件中的值的sed命令是什么?,regex,sed,Regex,Sed,用什么sed命令替换文件中的下一行。 我正在使用below 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; fix

用什么sed命令替换文件中的下一行。 我正在使用below 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; }

sed
在线操作。但是您的表达式包含换行符
\n
。因此,您必须使
sed
使用多行并在换行时中止计算,如。因此,请尝试使用前缀

:a;N、 美元!ba

's/..../g'
前面的
sed
表达式中。我还将
替换为其转义序列
\.
,并附加了一个
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

你在问题上加了一个标签:sed。或awk、perl或任何其他文本处理语言。“unix”不能做这件事。在unix下运行的实用程序需要。您希望匹配什么?看起来您想确保在匹配固定地址135.250.187.128后,下一行有
filename“vxrom.pxe.mg.latest”
。试着用通俗易懂的英语表达你的要求。我在这里找到了解决这个问题的另一个方法。首先,我们使用grep命令从文件#grep-n“| cut-d”:“-f1中获取搜索属性的行号,然后我们将grep命令的输出存储在属性中,并增加该属性的值,然后在sed命令中使用该属性值替换文件中的值