SED一个衬垫,用于取消注释并替换第一次出现的图案

时间:2015-08-09 14:41:25

标签: regex linux bash sed

我在linux中的这个settings.conf文件定义如下:

Section A
  first-setting = value
#  second-setting = off
  third-setting = value

Section B
  first-setting = value
#  second-setting = off
  third-setting = value

我想仅取消部分A的# second-setting = off(第一次出现),并将值设置为on。

到目前为止,我有这个:

cat settings.conf | sed '/^# second.*/ {s/^#//;s/off/on/}'

任何提示?

2 个答案:

答案 0 :(得分:1)

sed -e '1,/^Section B/s/#  second-setting = off/  section-setting = on/' settings.conf

答案 1 :(得分:1)

这是你的想法吗?

sed '0,/#/s/#\(.*\) off/\1 on/' settings.conf

或者如果你的osx上有非gnu sed:

sed '1,/#/s/#\(.*\) off/\1 on/' settings.conf