我正在编辑一个文件,想要查找所有出现的
\smash{example}
\smash{$example2$}
并将其替换为
\smash{\small{example}}
\smash{\small{$example2$}}
分别在命令行中使用“sed”之类的东西。有关如何执行此操作的任何帮助吗?
答案 0 :(得分:0)
这样就可以了:
sed -r 's/(\\smash\{)([^\}]+\})/\1\\small\{\2\}/g' <filename>
它的工作原理如下:
sed
使用正则表达式sed 's/<regexp>/<replacement>/'
执行文本替换
-r
允许使用扩展正则表达式(需要引用\1
和\2
组),最后g
表示替换应该是适用于与<regexp>
<regexp>
模式:(\\smash\{)([^\}]+\})
分为两组:
(\\smash\{)
只是捕获字符串的第一部分并将其放入组\1
([^\}]+\})
大致上说“读取任何字符序列直到您获得}
并将其放入第2组\2
”\1
部分中的\2
和<replacement>
组,并在它们之间插入\\small{
。插入组2后,也会添加完成}
。要详细了解sed
和regular expressions
,您可能需要先阅读这些couple of paragraphs。