我有一个小的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
}
尤其是当我想要控制的行数变大时,这就变得越来越麻烦了。我的awk知识并不都那么伟大,以上只是
感觉
错-我怎么能简化这个?
附言:如果可能的话,我想和awk在一起。请不要只是建议使用perl/python/任何东西都要容易得多。-)