設定ファイルを1行ずつ読み取って、条件に合致したら次の行に設定を追加するbashシェルスクリプト

Apache とかの設定ファイルを1行ずつ読み取って、条件に合致する行があったら次の行に設定を追加するというのを自動でやりたい。例えば、次の内容のファイルがあるとする。

上記で「設定2」という行があったら、直後に1行追加して「設定4」を追記する。

設定ファイル内のタブやスペースは全て保持する、というのがポイント。

スポンサーリンク

シェルスクリプト

シェルスクリプト addconf を作成。

IFS はシェル変数で、一時的にこのように設定しないと行頭のタブが echo 時に消滅してしまう。

実行結果

参考サイト

こちらを参考にしました。ありがとうございます。

read について

while read line は、シェルスクリプトでコマンドの実行結果とファイルを 1行ずつ読込みながら処理したいときによく使います。 実際によく使われているので、パターン化していつでも参考にして状況に応じて使えるようにまとめてみました。

空白を詰めない関連(行頭以外の空白)

シェルスクリプトでは、空白は詰められてしまいます。 ダブルクォーテーションで囲むと、空白は詰められなくなります。 $ string="a b" $ echo $string a b (←空白を詰める) $ echo "$string" a b (←空白を詰めない) 簡単なことなのに、昨日はどうやったら空白を詰めなくなる...

空白を詰めない関連(行頭も)

`while read`するなら`while IFS= read`した方が良いかもよっていう話です。説明は後にして、まずはlsしたファイル名をechoする例で違いを見てみます。``` $ touch " abc " "ho ...

変数に特定の文字列が含まれているかどうかの判定

if文で変数$AAAの中にxxxという文字列が含まれているか調べる方法がわかりません。初心者の質問で申し訳ございませんが、お願いします。 - その他(コンピューター・テクノロジー) 締切済 | 教えて!goo

スポンサーリンク
スポンサーリンク