sed + 双引号内的设置值

sed + 双引号内的设置值

文件是这样的

more /etc/sysconfig/chronyd
# Command-line options for chronyd
OPTIONS=""

-4我们需要设置里面的值""

该文件如下所示,

# Command-line options for chronyd
OPTIONS="-4" 

我们可以使用 sed 作为

sed -i s'/OPTIONS=""/OPTIONS="-4"/g' /etc/sysconfig/chronyd

但这不是很好的选择,因为(如果双引号内有空格)

例如,

more /etc/sysconfig/chronyd
# Command-line options for chronyd
OPTIONS=" "

答案1

以下应该有效,

  • 如果space选修的,
sed -r 's/OPTIONS="[[:space:]]?"/OPTIONS="-4"/g'
  • 如果space至少一个或多个,
sed -r 's/OPTIONS="[[:space:]]+"/OPTIONS="-4"/g'

或者两种可能性[正如@AdminBee提到的],

  • 如果space至少一个或多个或者选修的,
sed -r 's/OPTIONS="[[:space:]]*"/OPTIONS="-4"/g'

例如,

[arif@arif]$ printf '# Command-line options for chronyd\nOPTIONS=" "\n'
# Command-line options for chronyd
OPTIONS=" "
[arif@arif]$ printf '# Command-line options for chronyd\nOPTIONS=" "\n' | sed -r 's/OPTIONS="[[:space:]]"/OPTIONS="-4"/g'
# Command-line options for chronyd
OPTIONS="-4"

答案2

sed在 RE 上使用寻址:

sed -e '/^OPTIONS=/s/.*/OPTIONS="-4"/' /etc/sysconfig/chronyd

意思是:

  • 在匹配的行上^OPTIONS=(以 开头OPTION=),
    • 更换一切经过OPTIONS="-4"

答案3

尝试这个,

sed  's/^OPTIONS=.*/OPTIONS="-4"/g' /etc/sysconfig/chronyd

或者

sed  's/\(^OPTIONS="\).*"/\1-4"/g' /etc/sysconfig/chronyd

相关内容