1

我正在编辑一个文件并希望找到所有出现的

\smash{example}
\smash{$example2$}

并将其替换为

\smash{\small{example}}
\smash{\small{$example2$}}

分别在命令行中使用“sed”之类的东西。有关如何执行此操作的任何帮助?

4

1 回答 1

0

这会做到:

sed -r 's/(\\smash\{)([^\}]+\})/\1\\small\{\2\}/g' <filename>

它的工作原理如下:

  • 用于使用sed正则表达式执行文本替换sed 's/<regexp>/<replacement>/'
    • 该选项-r允许扩展正则表达式(需要引用\1and\2组),g最后的 the 意味着替换应该应用于与<regexp>
    • <regexp>图案:分为(\\smash\{)([^\}]+\})2组:
      1. (\\smash\{)它只是捕获字符串的第一部分并将其放入组中\1
      2. ([^\}]+\})大致说“阅读任何字符序列,直到你得到 a}并将其放入第 2 组\2
    • 现在您可以在零件中使用\1\2组并在它们之间<replacement>插入\\small{。此外,在}插入第 2 组后添加精加工。

要了解更多信息sedregular expressions您可能想从阅读前几段开始。

于 2012-08-05T11:54:30.983 回答