次の形式のプロパティ ファイルが 1 つあります (ファイルの名前は oldProperties.properties とします)。
group1.value1=Hello
group1.value2=World
group1.value3=BlaBla
group1.vlaue4=blabla2
ここで、プロパティ ファイルの特定の値を変更して新しいファイルを作成するスクリプトを開発したいと考えています。スクリプトは、プロパティの propertyName と newValue をコマンド ライン引数として受け取る必要があります。
changePropertyValue.ksh group1.value3 GoodBye
結果ファイル (newProperties.properties など) は次のようになります。
group1.value1=Hello
group1.value2=World
group1.value3=GoodBye
group1.vlaue4=blabla2
これを行うために、これらのコード行を changePropertyValue.ksh に記述しました。
property_name=$1
new_value=$2
old_properties=oldProperties.properties
new_properties=newProperties.properties
echo "" > $new_properties
cat $old_properties | awk 'BEGIN{ FS="=";OFS="=" } {if($1=="$property_name") $2="$new_value"; print $0;}' >> $new_properties
私はこれを起動しています
changePropertyValue.ksh group1.value3 GoodBye
そして今、新しいPropertiesファイルでgrepを実行すると、古い値が取得されます。つまり
grep group1.value3 newProperties.properties
output
group1.value3=BlaBla
同時に、コマンドラインでawkコマンドを直接起動すると、正常に動作します。つまり、これを起動すると
cat oldProperties.properties | awk 'BEGIN{ FS="=";OFS="=" } {if($1=="group1.value3") $2="GoodBye"; print $0;}' | grep group1.value3
output is :-
group1.value3=GoodBye
スクリプトを書いているときに私が間違っていることを誰か教えてください。
ありがとう