SED;在含有各种特殊字符的匹配行前面添加#

SED;在含有各种特殊字符的匹配行前面添加#

好吧,尽管我浏览了这里和其他地方的大量帖子,但我无法在以下行前面找到#:

[ -n "$ID" -a "$ID" -le 200 ] && return

我尝试了几种解决方案,例如:

sed -r "s/[ -n '$ID' -a '$ID' -le 200 ] \&\& return/#[ -n '$ID' -a '$ID' -le 200 ] \&\& return/g"

sed 's/[ -n "$ID" -a "$ID" -le 200 ]/#&/'

以及基于此处和其他地方的帖子的其他一些想法,但仍然没有结果。我只得到这样的结果:

[ -n "$ID" -a "$ID" -le 200 #[ -n '0' -a '0' -le 200 ] ] && return] && return return

#if [ -n "$BASH_VERSION" -o -n "$KSH_VERSION" -o -n "$ZSH_VERSION" ]; then
#  [ -x /usr/bin/id ] || return
#  ID=`/usr/bin/id -u`
#  [ -n "$ID" -a "$ID" -le 200 ] && return
#  # for bash and zsh, only if no alias is already set
#  alias vi >/dev/null 2>&1 || alias vi=vim
#fi

也许有人可以解释我如何为上面给出的特定行获取#(标签)。也许这很简单,我最好的猜测是我没有正确地逃避事情?

如上所述,我确实查阅了各种帖子,但我似乎仍然无法完成此任务......

答案1

您需要转义方括号:

sed 's/^\[ -n "$ID" -a "$ID" -le 200 \] && return$/#&/'

相关内容