にあるディレクトリ内の複数のtex
ファイルにいくつかのコードを挿入したいと思います。これらのファイルには異なるドキュメントクラスがあるため、これはシンボルプレースホルダーにすぎません。foo*.tex
\documentclass{.*}
.*
コードには次のようないくつかの行があります。
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{ngerman}
これを自動化する最良の方法は何ですか?
答え1
それを使用する1つの方法GNU sed
:
コンテンツscript.sed
:
/^\\documentclass[^{]*{[^}]*}/ {
a\
\\usepackage[utf8]{inputenc}\
\\usepackage[T1]{fontenc}\
\\usepackage{ngerman}
}
次のように実行します。
sed -s -i.bak -f script.sed foo*.tex
行の先頭を^
一致させるために使用します。documentclass
前にスペースがある場合は削除してください。
スイッチは-s
各入力を別のファイルとして処理し、拡張子を持つバックアップを-i
作成します。bak
答え2
次のシェルスクリプトはトリックを実行する必要があります。
#!/bin/sh
sed '
/\\begin{document}/ a\
\\usepackage[utf8]{inputenc}\
\\usepackage[T1]{fontenc}\
\\usepackage{ngerman}
' $1
ファイルを入力として使用してスクリプトを1つずつ呼び出すだけです。