sed는 문자열을 자신과 새 줄로 바꿉니다.

sed는 문자열을 자신과 새 줄로 바꿉니다.

내 HTML 파일에 다음 문자열이 여러 번 나타납니다.

<br> <h4 id=...


이제 sed가 html 편집에 적합하지 않을 수 있다는 것을 알고 있지만 with로 바꾸는 방법을 알려주실 수 있습니까 br> <h4 id
(여기서 '\n'은 새 줄입니다. br>\n <h4 idand 사이에 공백이 있습니다)?<br><h4...

나는 그것을 시도했지만 sed 's/br> <h4 id/br> \n<h4 id/g' report.html성공하지 못했습니다. 이 stackexchange에는 sed 및 개행 교체에 대한 다른 질문이 있지만 내 경우에는 적용되지 않습니다. 감사합니다!

고쳐 쓰다:저는 Windows 컴퓨터에서 Visual Studio Code bash 터미널과 (Git) Bash를 실행하고 있습니다(일종의 MINGW64입니다).

답변1

명령 대체 섹션의 개행 문자 는 다음에 개행 문자가 오는 것처럼 이식 s sed가능하게 표시됩니다 .\

sed 's/br> <h4 id/br>\
<h4 id/g' report.html

또는:

sed 's/\(br>\) \(<h4 id\)/\1\
\2/g' report.html

일부 sed구현에서는 \n이를 허용하지만 이는 비표준 확장입니다.

일부 구현에서는 (그리고 POSIX 표준의 다음 주요 버전에서 표준이 될 가능성이 있음) 개행(및 백슬래시 문자) 으로 확장되는 따옴표 형식(원래 ksh93에서 유래)을 sh사용할 수 있습니다 . 따라서 이를 사용하여 다음을 수행할 수 있습니다.$'...'\n\\

sed $'s/\(br>\) \(<h4 id\)/\1\\\n\2/g' report.html

동일한 다음 버전의 표준에서는 옵션 -E( sedBSD에서 sed활성화) 도 도입할 예정입니다.연장하다정규식을 사용하면 다음을 수행할 수 있습니다.

sed -E $'s/(br>) (<h4 id)/\1\\\n\2/g' report.html

답변2

사용해 보세요

sed 's/br>[[:blank:]]*<h4 id/br> \n<h4 id/g'

br>와 사이에는 공백이 여러 개 있을 수도 <h4있고 없을 수도 있습니다.

관련 정보