sed 명령이 대체된 텍스트를 대체하고 있습니까?

sed 명령이 대체된 텍스트를 대체하고 있습니까?

아이콘 이름을 바꾸는 bash 스크립트를 작성 중입니다. 특히 HTML 파일에서 "icon-close-m"을 "icon-close icon-size-medium"으로 변경하려고 합니다. ( [a-z]아래 줄에 명시된 대로 "close"를 제외한 모든 하위 문자열을 포함할 수 있지만 )

명령줄에서 이 명령을 실행하면 다음과 같이 작동합니다.

sed -i -e "s/\(icon-[a-z]*\)-m[^e]/\1 icon-size-medium/g" ./app/index.html

결과:

icon-close icon-size-medium

그러나 스크립트에서 실행하면 다음과 같이 변경됩니다.

icon-close icon-sizeedium

다음은 변경해야 하는 텍스트의 예입니다.

<span class="icon-close-m"></span>

다음과 같아야 합니다:

<span class="icon-close icon-size-medium"></span>

겪고 교체하는 것 같습니다.-m 신규 교체시 초기 교체 후. 이는 명령이 bash 스크립트로 구현된 경우에만 수행됩니다. 이전에는 이런 일이 발생하는 것을 본 적이 없으며 SE/SO에서도 비슷한 문제를 본 적이 없습니다. 이 명령은 어떤 종류의 루프에도 포함되지 않습니다.

관련 정보