我有一个文件,其中包含已注释掉的代码行,可以取消注释以使其变得有用。例如:
#调试= TRUE;
是否有sed命令会在文件中搜索" bug = tr"或"调试"并删除第一个字符(#)?因此它会变得活跃:
调试= TRUE;
提前感谢您为我看这个!
答案 0 :(得分:2)
您可以使用以下内容,
sed '/bug=tr\|debug/s/^#//' file
这将搜索包含字符串bug=tr
或debug
的行。如果它找到任何,那么它会用一个空字符串替换开头的#
符号。
示例:强>
$ 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