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

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

sedファイルを編集するにはどうすればいいですか/etc/heat/heat.conf?

デフォルトセクションの下に新しい行を追加したい

[DEFAULT]
rabbit_host =controller
rabbit_password =RABBIT_PASS

答え1

アドレスを使用し/regexp/て を含む行を見つけ[DEFAULT]、次に append( a) コマンドを使用してその下に行を追加することができます。 を に渡すと、-iそのsed場でファイルが変更されます (正しく動作していることを確認するために、最初に を使わずに実行することをお勧めします。変更されたファイルが実際に変更されることなくどのように見えるかを出力します)。

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

答え2

/tmp/aコンテンツを含むファイルがある場合

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

リクエスト者はもう解決策を見つけていると思いますが、念のため。

このリクエストは、アプリケーションcrudiniに最適です。これは、すべての主要なLinuxディストリビューションで利用可能です。たとえば、次の行はDEFAULTセクションに追加されます。/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

関連情報