文件是这样的
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