2017-10-11 2 views
0

예제를 설명하는 것이 좋습니다.일치하는 문자 쌍을 괄호로 바꾸십시오.

bla bla bla $E = mc^2$ bla blah 

가 나는 일치하는 쌍의 각 ocurrence을 대체하고 싶습니다 : 나는 $ 둘러싸는 인라인 방정식, 이런 일이있는 Charactes을 많이 가지고 라텍스 소스 파일을 (이 일반 텍스트 파일)가 이 같은 \(... \)하여 파일에 $ 문자 :

bla bla bla \(E = mc^2\) bla blah 

가능한 한 간단하게,이 작업을 수행하는의 어떤 생각? grep이이 문제를 처리 할 수 ​​있는지 잘 모르겠습니다.

파일의 파일 크기가 인 경우의 발생 횟수가 $ 인 것으로 가정합니다. 이 경우 홀수 위치의 $\(으로, 균등 위치 인 $\)으로 바꿔야합니다.

답변

0

이와 비슷한?

spacewrench$ cat foo 
bla bla bla $E = mc^2$ bla blah 
spacewrench$ sed -e 's/\$\(.*\)\$/\\(\1\\)/g' < foo 
bla bla bla \(E = mc^2\) bla blah 

sed 할 수 있습니다. 여러 행에 걸쳐있는 표현식을 사용하는 경우 백 슬래시 수와 줄 끝 번호를 사용하여 재생해야 할 수 있습니다. 그것은 단지 한 줄에 여러 $ 괄호 한 쌍을 넣을 수 있도록

.* 표현, 욕심입니다 ... 당신이 해결할 수 [^\$]*.*을 교체하여.

+0

'$ '가 이전'$'를 닫거나 새로운 (중첩 된) 쌍을 열지 않아도되는지 여부를 알 수있는 방법이 없기 때문에 이것은 _ 일치하는 쌍을 대체하지 않습니다. 예를 들어'$ a + $ b * c $ $'를 생각해보십시오. 그것은'(a +) b * c()'또는'(a + (b * c))'일까요? (그렇습니다, 나는 하나가 다른 것보다 더 의미가 있다는 것을 알고 있지만,'sed'는 영리하지 않습니다.) –

+0

나는 라텍스가 그렇게 똑똑하다고 생각하지 않습니다. '$ '는 토글입니다, afaik; 중첩이 불가능합니다. (반면에'\ $', ...) – rici

관련 문제