次の形式の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