
나는 sed
이것을 수행하는 방법이라는 것을 알고 있지만 작동시킬 수는 없습니다. 로 강조 표시된 수학 표현식이 포함된 라텍스 파일이 있습니다 $
. 이것을 MathJax 코드로 변환하고 싶습니다. 이를 위해서는 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'
이는 GNU가 전체 입력을 한 줄로 후루룩거리게 -z
만듭니다 . sed
이는 표준 기능의 확장입니다 sed
.
답변2
$
단어 경계 바로 앞에 오는 각 항목을 로 바꾸고 \(
, $
단어 경계 바로 뒤에 오는 각 항목을 다음으로 바꿉니다 \)
.
sed -e 's/\$\</\\(/g' -e 's/\>\$/\\)/g' file
GNU 사용자는 단어 경계에 및 를 sed
사용할 수 있지만 대신 사용할 수도 있습니다 . BSD 사용자는 표시된 대로 및 를 사용할 수 있지만 원할 경우 및 를 사용할 수도 있습니다 (macOS 사용자는\<
\>
\b
\<
\>
[[:<:]]
[[:>:]]
기본 sed
[[:<:]]
및 )를 사용해야 합니다 [[:>:]]
.