最好描述一个例子。我有一个乳胶源文件(这是一个普通的文本文件),它有很多字符$
包含内联方程式,如下所示:
bla bla bla $E = mc^2$ bla blah
我想用$
替换文件中\( ... \)
个字符的匹配对的每个错误,如下所示:
bla bla bla \(E = mc^2\) bla blah
想要做到这一点,尽可能简单吗?我不确定grep是否能够处理这个问题。
假设该文件的出现次数为偶数 $
。在这种情况下,我们所要做的就是将$
替换为奇数位置\(
,将$
替换为偶数位置\)
。
答案 0 :(得分: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}来解决这个问题。 }}