コマンドラインを介して複数のファイルに複数行のテキストを挿入する

コマンドラインを介して複数のファイルに複数行のテキストを挿入する

にあるディレクトリ内の複数の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つずつ呼び出すだけです。

関連情報