2つの異なるディレクトリにほぼ同じ2つの設定ファイルがあります。
## file1.conf ##
tunnel:
enable: true
interval: 20
public: false
loop:
enable: false
interval: 20
public: false
link:
enable: true
interval: 20
public: false
## file2.conf ##
tunnel:
enable: true
interval: 20
public: false
loop:
interval: 20
enable: false
public: false
link:
enable: true
interval: 20
public: false
今私は変えたい有効: 偽到着有効: 事実しかし、ただリング両方のファイルのセクション。 1つのコマンドセットのみを使用してこれら2つのファイルをどのように処理できますか?
答え1
これは内部編集を使用して行うことができますsed -i
。
sed -i '/^loop:/,/^$/ { s/enable:.*$/enable: true/ }' file1.conf file2.conf
コマンドは2つの主要部分に分けられます。
/^loop:/,/^$/ { .... }
{...}
これは、空白行で始まり、終わる内容に内容を制限することを意味します。loop:
中に私たちがいます。
s/enable:.*$/enable: true/
これenable:
により、行が true に設定されることが保証されます。
その結果、空の行で始まり、終わるすべての行が次のように書き換えfile1.conf
られるように書き直します。file2.conf
loop:
enable
enable: true
答え2
ブロック全体を解析する必要はありません。
sed -i '/loop/{:a;n;/enable/s/false/true/;Ta;}' file1.conf file2.conf