我希望对以下模式进行替换(前面的规则具有更高的优先级)
\right) -> remain unchanged
\right ) -> remain unchanged
\right] -> remain unchanged
\right ] -> remain unchanged
\right} -> remain unchanged
\right } -> remain unchanged
\ri) -> \right)
\ri -> \rightarrow
\right -> \rightarrow
换句话说,如果出现任何圆括号、方括号或花括号,我希望使用\right,其他任何字符都应该替换为\rightarrow。简而言之,我试图将许多缩写的谷歌文档公式转换为正确的LaTeX格式。我得到的结果如下所示。
sed -i 's/\\ri\([^g]\)/\\right\1/g' $tempfile1 #first step substitution
sed -i 's/\\right\([^])}>|a]\)/\\rightarrow\1/g' $tempfile1
sed -i 's/\\right \([^])}>|a]\)/\\rightarrow \1/g' $tempfile1
它的功能还不错,除了它没有像预期的那样将\right\更改为\rightarrow\。我的测试输入tempfile1如下:
\ri\right\right \right)\right]\right }\right )\ri \right ]\righta \al \\
它进入
\rightarrow\right\rightarrow \right)\right]\right }\right )\rightarrow \right ]\rightarrow \alpha \\
注意到右边的部分没有做正确。然后我添加了下面这行代码,认为它会明确地接手剩下的部分,但是它并没有像预期的那样工作,现在我真的很困惑...
sed -i 's/\\right\\/\\rightarrow\\/g' $tempfile1 #why this does not work
非常感谢您的提前帮助!
sed -i -e '...pattern1...' -e '...pattern2...' -e '...pattern3...' ...
将您的三个脚本合并为一个。对于千字节大小的文件,三次操作可能没有太大影响,但对于多兆字节甚至更大的文件,一次操作和三次操作的区别可能非常大。 - Jonathan Leffler