我正在编辑一个文件并希望找到所有出现的
\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
允许扩展正则表达式(需要引用\1
and\2
组),g
最后的 the 意味着替换应该应用于与<regexp>
<regexp>
图案:分为(\\smash\{)([^\}]+\})
2组:
(\\smash\{)
它只是捕获字符串的第一部分并将其放入组中\1
([^\}]+\})
大致说“阅读任何字符序列,直到你得到 a}
并将其放入第 2 组\2
”\1
和\2
组并在它们之间<replacement>
插入\\small{
。此外,在}
插入第 2 组后添加精加工。要了解更多信息sed
,regular expressions
您可能想从阅读前几段开始。