Linux
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=" "
在 RE 上使用
sed
定址:sed -e '/^OPTIONS=/s/.*/OPTIONS="-4"/' /etc/sysconfig/chronyd
意思是:
在匹配
^OPTIONS=
的行上(從 開始OPTION=
),
- 將所有內容替換為
OPTIONS="-4"
.
以下應該工作,
- 如果
space
是可選的,sed -r 's/OPTIONS="[[:space:]]?"/OPTIONS="-4"/g'
- 如果
space
是至少一個或多個,sed -r 's/OPTIONS="[[:space:]]+"/OPTIONS="-4"/g'
或兩種可能
$$ As mentioned by @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"