用括号替换匹配的字符对

时间:2017-10-11 16:42:57

标签: replace parentheses

最好描述一个例子。我有一个乳胶源文件(这是一个普通的文本文件),它有很多字符$包含内联方程式,如下所示:

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

我想用$替换文件中\( ... \)个字符的匹配对的每个错误,如下所示:

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

想要做到这一点,尽可能简单吗?我不确定grep是否能够处理这个问题。

假设该文件的出现次数为偶数 $。在这种情况下,我们所要做的就是将$替换为奇数位置\(,将$替换为偶数位置\)

1 个答案:

答案 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}来解决这个问题。 }}