Sed: 숫자 발생을 유지하면서 텍스트 바꾸기

Sed: 숫자 발생을 유지하면서 텍스트 바꾸기

다음과 같은 텍스트가 있습니다.

Blablabla <b>[intlink id="</b>2204<b>" type="page"] Blalala

</b>제거 하고 <b>유지하기 위해 교체하고 싶습니다 id="number". 따라서 결과는 다음과 같아야 합니다.

Blablabla <b>[intlink id="2204" type="page"] Blalala

나는 시도한다:

sed -i 's@id="</b>[[:digit:]]\+<b>"@id="{1}"@g' ~/edit.txt
Blablabla <b>[intlink id="{1}" type="page"] Blalala

나는 또한 다음을 시도했습니다.

sed -i 's@id="</b>[[:digit:]]\+<b>"@id="\\1"@g' ~/edit.txt

하지만 나는 다음을 얻습니다.

Blablabla <b>[intlink id="\1" type="page"] Blalala

그렇다면 정규식 번호에 ID 번호 텍스트를 어떻게 유지할 수 있습니까?

답변1

\1캡처 그룹 1을 참조하는 올바른 구문은 \\1리터럴 텍스트를 원한다는 의미입니다 \1. 따라서 \\1로 변경 \1한 다음 실제로 캡처하려는 부분을 괄호 안에 넣어야 합니다. 이것은 작동합니다:

sed -i 's@id="</b>\([[:digit:]]\+\)<b>"@id="\1"@g' ~/edit.txt

관련 정보