regex 删除所有出现的命令,保留命令参数

ou6hu8tu  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(115)

假设我有一个TeX文件,其中包含以下内容:

A \foo[B]{C \bar{D \baz[E]{F}}} G \foo{H} I

我正在寻找一个工具,它可以自动删除所有出现的\foo命令,用'y'替换\foo[x]{y},即使'y'包含换行符和/或许多嵌套括号。上述案文将变为:

A C \bar{D \baz[E]{F}} G H I

我有哪些选择?命令行会很好,但我会考虑任何其他选择。

sg3maiej

sg3maiej1#

这可以通过unix(或Linux)中的sed命令完成。如果你使用的是windows,cygwin提供了一个unix模拟器,可以很好的工作。

sed -e 's/\\foo\[[^]]*\]/\\foo/g' -e 's/\(\\foo{[^}]*}*\)} /\1 /g' -e 's/\\foo{//g' <your tex file>

会这么做这使用了正则表达式。第二个单引号前的g使它删除所有的foo命令,即使在一行tex代码中有多个出现。这假设对应于每个foo命令的右花括号后面有一个空格。

相关问题