我正在编辑一个文件并希望找到所有出现的
\smash{example}
\smash{$example2$}
并将其替换为
\smash{\small{example}}
\smash{\small{$example2$}}
分别在命令行中使用“sed”之类的东西。有关如何执行此操作的任何帮助?
这会做到:
sed -r 's/(\\smash\{)([^\}]+\})/\1\\small\{\2\}/g' <filename>
它的工作原理如下:
sed正则表达式执行文本替换sed 's/<regexp>/<replacement>/'
-r允许扩展正则表达式(需要引用\1and\2组),g最后的 the 意味着替换应该应用于与<regexp><regexp>图案:分为(\\smash\{)([^\}]+\})2组:
(\\smash\{)它只是捕获字符串的第一部分并将其放入组中\1([^\}]+\})大致说“阅读任何字符序列,直到你得到 a}并将其放入第 2 组\2”\1和\2组并在它们之间<replacement>插入\\small{。此外,在}插入第 2 组后添加精加工。要了解更多信息sed,regular expressions您可能想从阅读前几段开始。