【问题标题】:Using sed, i want to replace the the string value in a file使用 sed,我想替换文件中的字符串值
【发布时间】:2015-06-03 09:17:17
【问题描述】:
cat input2.txt

输出:

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

我试过了

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

不是把firewall的值改成false,请帮我看看这个语法

提前致谢

【问题讨论】:

    标签: linux shell sed


    【解决方案1】:

    您需要将. 放在* 之前,这样它就可以匹配任何字符零次或多次。

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

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

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

    【讨论】:

      【解决方案2】:

      更准确地说:

      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-10
        • 2017-11-14
        • 2021-05-16
        • 2021-03-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-11
        • 1970-01-01
        相关资源
        最近更新 更多