SED - 1)과 2)의 차이점은 무엇입니까 - 2)가 일치하지 않는 이유 [중복]

SED - 1)과 2)의 차이점은 무엇입니까 - 2)가 일치하지 않는 이유 [중복]
  1. echo "123456xx111"| sed '{s/\([x]\)/{\1}/}'
    123456{x}x111
    
  2. echo "123456xx111"| sed '{s/\([x]+\)/{\1}/}'
    123456xx111
    

답변1

Plus는 지원되는 경우 백슬래시가 필요합니다(GNU 확장임).

echo "123456xx111"| sed '{s/\([x]\+\)/{\1}/}'
123456{xx}111

또는 확장 정규식으로 전환하세요.

echo "123456xx111"| sed -E '{s/([x]+)/{\1}/}'
123456{xx}111

{}외부 문자 는 아무 작업도 수행하지 않으며 닫는 중괄호 앞에 세미콜론이나 개행 문자가 없는 일부 sed 구현에서는 작동하지 않을 수 있으므로 표현식을 크게 단순화할 수 있습니다. 전체 문자열을 사용할 때 아무것도 캡처할 필요가 없습니다.

echo "123456xx111"| sed -E 's/x+/{&}/'
123456{xx}111

또는 -EGNU 확장이 없는 경우(따라서 수량자는 \{1,\}"하나 이상"임):

echo "123456xx111"| sed 's/x\{1,\}/{&}/'
123456{xx}111

관련 정보