我有一种情况,我想用sed替换文件中的多行文本。 搜索文本是:
Enable=Yes
UseTest=No
UseTempS=No
UseStatic=No
IPAddress=
SubnetMask=
DefaultGateway=
要替换的文字是
Enable=No
UseTest=No
UseTempS=No
UseStatic=No
IPAddress=0.0.0.0
SubnetMask=255.255.255.0
DefaultGateway=1.1.1.1
任何帮助将不胜感激。
答案 0 :(得分:4)
GNU代码sed:
sed -r 's#(.*)=(.*)#/\1=/s/=.*/=\2/#' file2|sed -f - file1
会话协议:
$ cat file1 Enable=Yes UseTest=No UseTempS=No UseStatic=No IPAddress= SubnetMask= DefaultGateway= $ cat file2 Enable=No UseTest=No UseTempS=No UseStatic=No IPAddress=0.0.0.0 SubnetMask=255.255.255.0 DefaultGateway=1.1.1.1 $ sed -r 's#(.*)=(.*)#/\1=/s/=.*/=\2/#' file2|sed -f - file1 Enable=No UseTest=No UseTempS=No UseStatic=No IPAddress=0.0.0.0 SubnetMask=255.255.255.0 DefaultGateway=1.1.1.1
答案 1 :(得分:0)
如果您想按顺序匹配这些字段,请阅读它们,一种便携式方式:
sed -e '/Enable=Yes/!b;N;
/UseTest=No/!b;N;
/UseTempS=No/!b;N;
/UseStatic=No$/!b;N;
/IPAddress=$/!b;N;
/SubnetMask=$/!b;N;
/DefaultGateway=$/!b;
s/.*//;rtemplate' input
<强>模板强>
Enable=No
UseTest=No
UseTempS=No
UseStatic=No
IPAddress=0.0.0.0
SubnetMask=255.255.255.0
DefaultGateway=1.1.1.1
答案 2 :(得分:-1)
cat yourfile.txt | sed -f zarmacimamadzaghli.sed
<强> zarmacimamadzaghli.sed 强>
s/Enable=Yes/Enable=No/
s/UseTest=No/UseTest=No/
s/UseTempS=No/UseTempS=No/
s/UseStatic=No/UseStatic=No/
s/IPAddress=/IPAddress=0.0.0.0/
s/SubnetMask=/SubnetMask=255.255.255.0/
s/DefaultGateway=/DefaultGateway=1.1.1.1/