【问题标题】:Regular expression in sedsed中的正则表达式
【发布时间】:2015-01-20 18:54:50
【问题描述】:

我尝试在 sed 命令中使用正则表达式。我尝试替换模式。我的模式是 /etc/security/policy.conf 文件中的一行。该值未知,它应该是:

#LOCK_AFTER_RETRIES=NO 或 LOCK_AFTER_RETRIES=4(或此处的任何数字)。我想用值 LOCK_AFTER_RETRIES=6 替换找到的模式。所以我尝试了命令:

sed 's/#*LOCK_AFTER_RETRIES=[a-zA-Z0-9][a-zA-Z0-9]/LOCK_AFTER_RETRIES=6/g' ./policy.conf

但它看起来不起作用。

谢谢。

【问题讨论】:

    标签: regex bash sed solaris


    【解决方案1】:

    试一试:

    sed 's/^#\?\s*LOCK_AFTER_RETRIES=[^=]*/LOCK_AFTER_RETRIES=6/' 
    

    用一些例子测试:

    # LOCK_AFTER_RETRIES=NO
    #LOCK_AFTER_RETRIES=NO
     LOCK_AFTER_RETRIES=4
    LOCK_AFTER_RETRIES=4
    
    kent$  sed 's/^#\?\s*LOCK_AFTER_RETRIES=[^=]*/LOCK_AFTER_RETRIES=6/' f
    LOCK_AFTER_RETRIES=6
    LOCK_AFTER_RETRIES=6
    LOCK_AFTER_RETRIES=6
    LOCK_AFTER_RETRIES=6
    

    【讨论】:

      【解决方案2】:

      这是你想要的吗?

      sed -i 's/LOCK_AFTER_RETRIES=.*/LOCK_AFTER_RETRIES=6/g' filename
      

      我这样测试,它可以工作:

      echo "LOCK_AFTER_RETRIES=4\n#LOCK_AFTER_RETRIES=NO" | sed 's/LOCK_AFTER_RETRIES=.*/LOCK_AFTER_RETRIES=6/g'
      

      [编辑]

      查看其他人的答案后,我不确定您是将#LOCK_AFTER_RETRIES=NO替换为LOCK_AFTER_RETRIES=6还是#LOCK_AFTER_RETRIES=6

      我上面的答案会将#LOCK_AFTER_RETRIES=NO改为#LOCK_AFTER_RETRIES=6

      如果要将#LOCK_AFTER_RETRIES=NO 更改为LOCK_AFTER_RETRIES=6,请尝试: sed -i 's/^#*LOCK_AFTER_RETRIES=.*/LOCK_AFTER_RETRIES=6/g' filename

      总结:

      echo "LOCK_AFTER_RETRIES=4\n#LOCK_AFTER_RETRIES=NO" | sed 's/LOCK_AFTER_RETRIES=.*/LOCK_AFTER_RETRIES=6/g'
      LOCK_AFTER_RETRIES=6
      #LOCK_AFTER_RETRIES=6
      echo "LOCK_AFTER_RETRIES=4\n#LOCK_AFTER_RETRIES=NO" | sed 's/^#*LOCK_AFTER_RETRIES=.*/LOCK_AFTER_RETRIES=6/g'
      LOCK_AFTER_RETRIES=6
      LOCK_AFTER_RETRIES=6
      

      【讨论】:

      • 谢谢,是的,这正是我所需要的。
      • 酷。实际上,如果您有不同的要求,我会编辑我的答案。
      【解决方案3】:

      试试这个:

      sed '/LOCK_AFTER_RETRIES/s/=.*/=6/g'  ./policy.conf
      

      【讨论】:

        猜你喜欢
        • 2010-09-19
        • 2018-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-28
        • 1970-01-01
        • 1970-01-01
        • 2019-08-04
        相关资源
        最近更新 更多