2017-10-11 7 views
0

例を説明することをお勧めします。私はの一致するペアの各ocurrenceを交換したいと思います一致する文字のペアをかっこで置き換えてください。

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

:私は、インライン式を囲む別文字$をたくさん持っているラテックスソースファイル(これは通常のテキストファイルです)、このようなものを持っていますこのような\(... \)により、ファイル内の文字$、:

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でも可能です。複数の行にまたがる式がある場合は、バックスラッシュの数、行の終わりを使用してプレイする必要があります。

.*式は欲張りなので、それが唯一の行に複数の$周りの括弧のペアを1つ置くかもしれません...あなたは[^\$]*.*を交換していることを修正することができます。

+0

'$'が前の '$'を閉じたり、新しい(ネストされた)ペアをオープンすることになっているかどうかを知る方法がないので、これは_matching_の組を置き換えません。たとえば、 '$ a + $ b * c $ $'を考えてみましょう。それは '(a +)b * c()'か '(a +(b * c))'でしょうか? (はい、私は誰かが他よりも理にかなっていることを知っていますが、 'sed'はそれほどスマートではありません) –

+0

私はラテックスもそれは賢明ではないと思います。 '$'はアフガニスタンのトグルです。ネスティングは不可能です。 ( '\ $'、これに対して...) – rici

関連する問題