如何在 LaTeX 文档中的特定行添加点?

如何在 LaTeX 文档中的特定行添加点?

我有一个 LaTeX 文档,其中有以下形式的行

\section*{3.1}
\addcontentsline{toc}{section}{3.1}

或一般情况下

\section*{x.y}
\addcontentsline{toc}{section}{x.y}

对于 x 介于 1 和 31 之间且 y 介于 1 和 12 之间(含 1 和 12)(日期)。我想将这些行更改为形式

\section*{x.y.}
\addcontentsline{toc}{section}{x.y.}

有一些简单的脚本可以做到这一点吗?

答案1

您可以使用 sed,匹配该行的前后部分并.在中间放置一个。该命令执行正则表达式替换。界定一个组;并在替换文本中引用这些组。s/REGEXP/REPLACEMENT/\(…\)\1\2

sed <original.tex >replaced.tex \
    -e 's/^\(\\section\\*{[0-9]*\.[0-9]*\)\(}\)$/\1.\2/' \
    -e 's/^\(\\addcontentsline{toc}{section}{[0-9]*\.[0-9]*\)\(}\)$/\1.\2/'

使用 sed 的另一种方法是,如果该行与所需的模式匹配,则将最后一个替换}为:.}

sed <original.tex >replaced.tex \
    -e '/^\\section\\*{[0-9]*\.[0-9]*}\)$/ s/}$/.&/' \
    -e '/^\\addcontentsline{toc}{section}{[0-9]*\.[0-9]*}/ s/}$/.&/'

您还可以使用\|组合两种模式,但在这种情况下,我认为它会使代码更短但不太清晰。

如果想就地替换文件,在Linux下,可以使用

sed -i -e … somefile.tex

相关内容