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(含む)(日付)の間の場合。この行を形式に変更したいと思います。

\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を使用するもう1つの方法は、最後の項目を次のよう}に置き換えることです。.}

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

関連情報