내 HTML 파일에 다음 문자열이 여러 번 나타납니다.
<br> <h4 id=...
이제 sed가 html 편집에 적합하지 않을 수 있다는 것을 알고 있지만 with로 바꾸는 방법을 알려주실 수 있습니까 br> <h4 id
(여기서 '\n'은 새 줄입니다. br>\n <h4 id
and 사이에 공백이 있습니다)?<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
( sed
BSD에서 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
있고 없을 수도 있습니다.