다음과 같은 텍스트가 있습니다.
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