sed 如何忽略注释行

sed 如何忽略注释行

我的脚本中有以下 sed 命令

sed -i "/$PARAM/s/$OLD/$BEW/g"           $FILE

此 sed 命令将 PARAMETER 所在行中的 OLD 值替换为 new

但是我还需要忽略“#”行,
那么如何才能更改 sed 语法以忽略“#”行呢?解决方案必须仅使用 sed,而不是 perl!

答案1

我想你想要这样的东西:

/^[^#]*$PARAM/s/$OLD/$NEW/

如果前面没有井号,则替换$OLD为,$NEW$PARAM

答案2

(分支)命令b应该有帮助:

/^#/b; /$PARAM/ s/$OLD/$NEW/g

摘自手册sed

        b 标签
              分支到标签;如果省略标签,则分支到脚本末尾。

        [...]

相关内容