이 작업을 수행할 수 있는 방법이 있다는 것을 알고 있지만 sed
제대로 작동하도록 할 수는 없습니다. 을 사용하는 코드가 포함된 Latex 파일이 있습니다 $
. 이를 MathJax로 변환하고 싶습니다. 이를 위해서는 a 의 홀수 인스턴스 와 a 의 짝수 인스턴스 만 $
교체 하면 됩니다 . 그래서\(
$
\)
Here is Einstein's equation $E=mc^2$ and here is Newton's law $F=ma$
되어야 한다
Here is Einstein's equation \(E=mc^2\) and here is Newton's law \(F=ma\)
연속적으로 나타나는 항목은 $
같은 줄에 있지만 여러 줄이 있을 수도 있습니다. 파일 전체에서 교체가 이루어지기를 원합니다. 어떤 도움이라도 대단히 감사하겠습니다.
답변1
GNU 사용 sed
:
sed -Ez 's/\$([^$]*)\$/\\(\1\\)/g'
또한 아니요 -E
:
sed -z 's/\$\([^$]*\)\$/\\(\1\\)/g'
이로 -z
인해 GNU는 sed
전체 입력을 한 줄로 처리합니다. 이는 표준 기능의 확장입니다 sed
.
답변2
$
다음 각 단어 경계를 로 바꾸고 \(
다음 $
각 단어 경계를 다음으로 바꿉니다 \)
.
sed -e 's/\$\</\\(/g' -e 's/\>\$/\\)/g' file
GNU 사용자는 및 단어 경계로 sed
사용할 수 있지만 대체도 가능합니다 . BSD 사용자는 표시된 대로 및를 사용할 수 있지만 원할 경우 및 또한 사용할 수 있습니다 (macOS 사용자 및\<
\>
\b
\<
\>
[[:<:]]
[[:>:]]
기본 sed
[[:<:]]
및 )을 사용해야 합니다 [[:>:]]
.