次のファイルがあります
$vnic = "ocid1.vnic.oc1.ap-mumbai-1.abrg6ljrqwrgvdjuhhm55plktmxx7gz723mpcpuspa5rdmtd7spi5egww2ua";
$nsg1 = "ocid1.networksecuritygroup.oc1.ap-mumbai-1.aaaaaaaawzei5sybgstutahgils36oohlvlpz76f7zdl7hvbi5oqzxtiw7va";
$nsg2 = "ocid1.networksecuritygroup.oc1.ap-mumbai-1.aaaaaaaa6kjmsfkyxfkcorcys6zrgxtyjquwy7mla27n2hqdl4aqubkgd6dq";
$nsg3 = "ocid1.networksecuritygroup.oc1.ap-mumbai-1.aaaaaaaavar4pef6iqnwuui6qjawxdz4ui3vs4tyges64isde6wufwi44cqa";
$nsg4 = "ocid1.networksecuritygroup.oc1.ap-mumbai-1.aaaaaaaaaaxzwne6pnzzjku2ld6m77dt7lr2m2qc4ix3mmrzx5baux5s5n7a";
$nsg5 = "ocid1.networksecuritygroup.oc1.ap-mumbai-1.aaaaaaaatxe7bmd5n24don5473nbutcg34some672big7iowyk5f7yjfnmrq";
必要なときに$vnic
、、、、値を変更したい$nsg1
と思います。どのように使用できますか?それとも毎日更新されるbashスクリプトで使用したいですか?$nsg2
$nsg3
$nsg4
$nsg5
sed
awk
ベストアンサー1
これを使用すると、sed
次のことを試すことができます。
sed -i "/\$some_field/s/\".*\"/\"$some_val\"/" file
たとえば、値を変更するには、次のようにします$vnic
。
some_val="fuzz"
sed -i "/\$vnic/s/\".*\"/\"$some_val\"/" file
/\$vnic/
sedコマンドを使用して一致する行を選択します$vnic
。 Withは、の値とs/\".*\"/\"$some_val\"/
一致する行の二重引用符(これらの二重引用符を含む)の間のすべての値を置き換えます。"
$some_val
たとえば、ファイルの内容が次のような場合:
$vnic = "ocid1.vnic.oc1.ap-mumbai-1.abrg6ljrqwrgvdjuhhm55plktmxx7gz723mpcpuspa5rdmtd7spi5egww2ua";
$nsg1 = "ocid1.networksecuritygroup.oc1.ap-mumbai-1.aaaaaaaawzei5sybgstutahgils36oohlvlpz76f7zdl7hvbi5oqzxtiw7va";
$nsg2 = "ocid1.networksecuritygroup.oc1.ap-mumbai-1.aaaaaaaa6kjmsfkyxfkcorcys6zrgxtyjquwy7mla27n2hqdl4aqubkgd6dq";
$nsg3 = "ocid1.networksecuritygroup.oc1.ap-mumbai-1.aaaaaaaavar4pef6iqnwuui6qjawxdz4ui3vs4tyges64isde6wufwi44cqa";
$nsg4 = "ocid1.networksecuritygroup.oc1.ap-mumbai-1.aaaaaaaaaaxzwne6pnzzjku2ld6m77dt7lr2m2qc4ix3mmrzx5baux5s5n7a";
$nsg5 = "ocid1.networksecuritygroup.oc1.ap-mumbai-1.aaaaaaaatxe7bmd5n24don5473nbutcg34some672big7iowyk5f7yjfnmrq";
アプリsome_val=fuzz ; sed -i "/\$vnic/s/\".*\"/\"$some_val\"/" file
ファイルは次のように更新されます。
$vnic = "fuzz";
$nsg1 = "ocid1.networksecuritygroup.oc1.ap-mumbai-1.aaaaaaaawzei5sybgstutahgils36oohlvlpz76f7zdl7hvbi5oqzxtiw7va";
$nsg2 = "ocid1.networksecuritygroup.oc1.ap-mumbai-1.aaaaaaaa6kjmsfkyxfkcorcys6zrgxtyjquwy7mla27n2hqdl4aqubkgd6dq";
$nsg3 = "ocid1.networksecuritygroup.oc1.ap-mumbai-1.aaaaaaaavar4pef6iqnwuui6qjawxdz4ui3vs4tyges64isde6wufwi44cqa";
$nsg4 = "ocid1.networksecuritygroup.oc1.ap-mumbai-1.aaaaaaaaaaxzwne6pnzzjku2ld6m77dt7lr2m2qc4ix3mmrzx5baux5s5n7a";
$nsg5 = "ocid1.networksecuritygroup.oc1.ap-mumbai-1.aaaaaaaatxe7bmd5n24don5473nbutcg34some672big7iowyk5f7yjfnmrq";
異なる値を置き換えるには、同じコマンドを複数回使用しないように-e
オプションを使用できます。たとえば、次のようになります。sed
some_val2=fuzz
some_val=buzz
sed -e "/\$vnic/s/\".*\"/\"$some_val\"/" -e "/\$nsg1/s/\".*\"/\"$some_val2\"/"
ファイルの内容は次のとおりです。
$vnic = "buzz";
$nsg1 = "fuzz";
$nsg2 = "ocid1.networksecuritygroup.oc1.ap-mumbai-1.aaaaaaaa6kjmsfkyxfkcorcys6zrgxtyjquwy7mla27n2hqdl4aqubkgd6dq";
$nsg3 = "ocid1.networksecuritygroup.oc1.ap-mumbai-1.aaaaaaaavar4pef6iqnwuui6qjawxdz4ui3vs4tyges64isde6wufwi44cqa";
$nsg4 = "ocid1.networksecuritygroup.oc1.ap-mumbai-1.aaaaaaaaaaxzwne6pnzzjku2ld6m77dt7lr2m2qc4ix3mmrzx5baux5s5n7a";
$nsg5 = "ocid1.networksecuritygroup.oc1.ap-mumbai-1.aaaaaaaatxe7bmd5n24don5473nbutcg34some672big7iowyk5f7yjfnmrq";