Bashスクリプト:あるファイルの値を別のファイルに置き換える

Bashスクリプト:あるファイルの値を別のファイルに置き換える

次のファイル()がありますone.cnf

KEY1="value1"
KEY4="VALUE4"

別のファイル(two.cnf)は次のとおりです。

USER_HOST="local"
KEY1="abc"
PASS="lorem"
KEY2="ABC"
KEY4="XYZ"

その変数の値を読んでone.cnf置き換えたいと思いますtwo.cnf
だからそれは次two.cnfのように見えます。

USER_HOST="local"
KEY1="value1"
PASS="lorem"
KEY2="ABC"
KEY4="VALUE4"

ベストアンサー1

使用法awk:ファイル1からキーを読み、ファイル2を置き換えます。

awk 'BEGIN{FS=OFS="="}
     NR==FNR {key[$1]=$2 ; next }
     $1 in key {$2=key[$1]}
     1' one.cnf two.cnf

交換が必要な場合はご利用くださいsponge

awk '<code>' one.cnf two.cnf | sponge two.cnf

または、GNUawk内部でone.cnf削除されないようにコードを少し変更する必要があります。

awk -i inplace 'BEGIN{FS=OFS="="}
     NR==FNR {key[$1]=$2}
     FNR!=NR && $1 in key {$2=key[$1]}
     1' one.cnf two.cnf

-i inplace -v INPLACE_SUFFIX=.bup- サフィックスを使用して元のファイルを.bupバックアップするために使用されます。

おすすめ記事