私はいくつかのインプレース ファイル変更を行う小さな awk スクリプトを持っています (Java.properties
ファイルに対して、アイデアを提供します)。これは、多数のユーザーに影響を与える展開スクリプトの一部です。
ファイルの残りの部分はユーザーの好みに任せて、デフォルトを設定できるようにしたいと考えています。これは、構成行が欠落している場合は追加し、存在する場合は変更し、他のすべてをそのままにしておくことを意味します。
現在、私は次のようなものを使用しています:
# initialize
BEGIN {
some_value_set = 0
other_value_set = 0
some_value_default = "some.value=SOME VALUE"
other_value_default = "other.value=OTHER VALUE"
}
# modify existing lines
{
if (/^some\.value=.*/)
{
gsub(/.*/, some_value_default)
some_value_set = 1
}
else if (/^other\.value=.*/)
{
gsub(/.*/, other_value_default)
other_value_set = 1
}
print $0
}
# append missing lines
END {
if (some_value_set == 0) print some_value_default
if (other_value_set == 0) print other_value_default
}
特に制御したい行数が多くなると、ますます面倒です。私のぎこちない知識はそれほど素晴らしいものではなく、上記は間違っているように感じます-どうすればこれを合理化できますか?
PS: 可能であれば、awk を使用したいと思います。Perl や Python などを使用する方がはるかに簡単だということだけを推奨しないでください。:-)