如果行包含模式,请使用Sed替换第一个字符

时间:2015-02-13 13:31:28

标签: bash sed

我有一个文件,其中包含已注释掉的代码行,可以取消注释以使其变得有用。例如:

#调试= TRUE;

是否有sed命令会在文件中搜索" bug = tr"或"调试"并删除第一个字符(#)?因此它会变得活跃:

调试= TRUE;

提前感谢您为我看这个!

3 个答案:

答案 0 :(得分:2)

您可以使用以下内容,

sed '/bug=tr\|debug/s/^#//' file

这将搜索包含字符串bug=trdebug的行。如果它找到任何,那么它会用一个空字符串替换开头的#符号。

示例:

$ echo '#debug=true;' | sed '/bug=tr\|debug/s/^#//'
debug=true;
$ echo '#bug=true;' | sed '/bug=tr\|debug/s/^#//'
bug=true;

答案 1 :(得分:1)

是的,使用所谓的“地址”:

  sed -e '/bug=tr/ s/^#//'

# if this ^^^^^^^
# is true, run this ^^^^^

答案 2 :(得分:0)

这是我的版本:

$ cat << EOF | sed -r 's/(#\s*)((de)?bug\s*\=\s*[tT]r(ue)?)/\2/'
> #debug=true
> # debug = true
> # bug = tr
> # debu = tue
> # buggy = tree
> EOF
debug=true
debug = true
bug = tr
# debu = tue
# buggy = tree