用sed取消注释代码

时间:2017-05-20 16:58:50

标签: bash shell ubuntu sed

我正在编写一个脚本,可以从文件中取消注释几行代码。这就是我试图取消注释的内容:

   //...your try block
} catch (CustomException ex) {
    throw new ValidationException(ex.getCode());
} catch (BusinessValidationException ex) {
    throw new ValidationException(ex.getMessage());
} catch (Exception ex) {
    throw new ValidationException(100);
}

所以我做了我的研究,发现这个命令可以完成我正在寻找的东西:

#export PATH="$HOME/.rbenv/bin:$PATH"
#eval "$(rbenv init -)"

那么我如何调整它以做我想要的事情呢?我试图在命令中粘贴文本,尽力逃避所有引号,但它似乎没有用。

3 个答案:

答案 0 :(得分:4)

评论适用于评论,而非流量控制。

不是尝试修改文件来切换这些行,而是通过环境变量控制它们的执行。

if [[ -v enable_ruby ]]; then
  export PATH="$HOME/.rbenv/bin:$PATH"
  eval "$(rbenv init -)"
fi

现在,如果变量enable_ruby在环境中设置为任何值,则会修改PATH并配置ruby。否则,这两行将被忽略。

$ bash myScript                # Don't do the ruby stuff
$ enable_ruby=1 bash myScript  # Do the ruby stuff
$ export enable_ruby=          # The empty string is sufficient
$ bash myScript                # Do the ruby stuff
$ unset enable_ruby
$ bash myScript                # Don't do the ruby stuff

答案 1 :(得分:3)

@ThomasKühn指出,你必须谨慎而费力地逃避#export PATH="$HOME/.rbenv/bin:$PATH" # setrbpath #eval "$(rbenv init -)" # runrbinit 的格局。sed -i -e '/setrbpath/s/^#//' file

更聪明地工作的替代方案,而不是更难,并且看看你是否可以预先标记线条:

e.guid

现在你可以ORDER BY MIN(e.guid),它可以稳定地对模板文件进行小修改。

答案 2 :(得分:0)

要强有力地完成这项工作,只需将awk与字符串操作一起使用即可。给定这些输入文件:

ID

这就是你所需要的:

CODE

或者目标字符串是否可以显示在中间行而不是始终作为整行:

ID

无论目标字符串包含哪些字符,上述内容都将有效。