使用sed,我想替换文件中的字符串值

时间:2015-06-03 09:17:18

标签: linux shell sed

cat input2.txt

输出:

    'enable_lb': True,
    'enable_firewall': True,
    'enable_vpn': True,

我试过

sed "s/^*.enable_firewall.*/    'enable_firewall': False,/" input2.txt

它没有将防火墙的值更改为false,请以此语法帮助我

先谢谢

2 个答案:

答案 0 :(得分:0)

您需要将.放在*之前,以便它可以匹配任何char零次或更多次。

sed "s/^.*enable_firewall.*/    'enable_firewall': False,/" input2.txt

要进行就地编辑,请添加-i参数。

sed -i "s/^.*enable_firewall.*/    'enable_firewall': False,/" input2.txt

答案 1 :(得分:0)

更确切地说:

sed "s/\('enable_firewall': \)True/\1False/g" file

这与'enable_firewall': True

完全匹配

或者:

sed "s/\('enable_firewall':.*\)True/\1False/g" file

匹配enable_firewall':*True *表示任何

或者:

sed "s/\('enable_firewall':[ \t]*\)True/\1False/g" file1

这与'enable_firewall': True:之间的零个或多个空格或标签True相匹配。如果必须至少有一个空格,请使用[ \t]\+代替[ \t]*

注意:使用sed -i ...替换文件

中的inplace