シェルスクリプトを使用して/ etcのファイルを編集しますか?

シェルスクリプトを使用して/ etcのファイルを編集しますか?

sedファイルの編集にどのように使用できますか/etc/heat/heat.conf

基本セクションに新しい行を追加したいと思います。

[DEFAULT]
rabbit_host =controller
rabbit_password =RABBIT_PASS

答え1

/regexp/アドレスを使用して埋め込み行を検索し、追加[DEFAULT]a)コマンドを使用してその下に行を追加できます。ファイルをその場所で変更するには、に-i渡します。 (正しい操作を実行するかどうかを確認するために、最初に実行せずに実行したい場合があります。実際に変更せずに変更されたファイルがどのように見えるかを出力します):sed

# sed -i '/^\[DEFAULT\]$/a rabbit_host =controller\nrabbit_password =RABBIT_PASS' /etc/heat/heat.conf

答え2

/tmp/acontnetを含むファイルがある場合

hello my friend

sed を使用して文字列を置き換えることができます。

sed -i 's/hello/hi/g' /tmp/a

結果は次のとおりです。

hi my friend

望むより:man sed

sed次のコマンドを使用して、ファイルに欠落している行を追加することもできます>>

echo "I like you">>/tmp/a

答え3

依頼者が今まで解決策を見つけたと確信しています。でも、万が一の場合に備えて。

この要求は、すべての主要なLinuxバージョンで利用可能なcrudiniアプリケーションに最適です。たとえば、DEFAULT次のセクションに1行を追加します。/etc/heat/heat.conf

crudini --set /etc/heat/heat.conf DEFAULT mysetting true

この部分:

[DEFAULT]
rabbit_host =controller
rabbit_password =RABBIT_PASS
mysetting = true

confファイルにすでにエントリがある場合は更新されます。

答え4

昔のed方法

ed -s test <<EOF
/^\[DEFAULT\]$/
a
rabbit_host =controller
rabbit_password =RABBIT_PASS
.
w
q
EOF

関連情報