好吧,尽管我浏览了这里和其他地方的大量帖子,但我无法在以下行前面找到#:
[ -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$/#&/'