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$/#&/'

관련 정보