다음 내용이 포함된 대용량 SQL 파일이 있습니다.
[code language="bash"]
git checkout master
git pull origin master
...
[/code]
Lorem ipsum dolor sit amet, consectetur adipiscing elitUt enim ad minim
[code]some other code[/code]
veniam, quis nostrud exercitation
[code language="php"]var_dump($data);[/code]
[code language="{lang}"]{wrapped-code}[/code]
나는 로 교체하고 싶다<pre><code class="language-{lang}">{wrapped-code}</code></pre>
최종 출력은 다음과 같습니다.
<pre><code class="language-bash">
git checkout master
git pull origin master
...
</code></pre>
Lorem ipsum dolor sit amet, consectetur adipiscing elitUt enim ad minim
<pre><code>some other code</code></pre>
veniam, quis nostrud exercitation
<pre><code class="language-php">var_dump($data);</code></pre>
sed나 다른 찾기 및 바꾸기 명령을 사용하여 이를 달성하는 방법을 알려주십시오.
답변1
sed -e 's/\[code language="\([^"]*\)"\]/<pre><code class="language-\1">/' \
-e 's!\[/code\]!</code></pre>!' \
< input > output
대괄호는 문자 집합을 나타내지 않도록 이스케이프 처리해야 합니다. 그런 다음 두 번째 검색 및 바꾸기에 사용할 따옴표 사이의 텍스트를 캡처하여 피하기 위해 구분 기호 \1
로 사용합니다.!
기울어진 이쑤시개 증후군HTML 닫는 태그로 바꿉니다.