-
echo "123456xx111"| sed '{s/\([x]\)/{\1}/}' 123456{x}x111
-
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
또는 -E
GNU 확장이 없는 경우(따라서 수량자는 \{1,\}
"하나 이상"임):
echo "123456xx111"| sed 's/x\{1,\}/{&}/'
123456{xx}111