У меня есть небольшой 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 не так уж велики, и вышеописанное просто кажется неправильным - как я могу упростить это?
P.S .: Если возможно, я бы хотел остаться с awk. Пожалуйста, не просто рекомендуйте использовать Perl / Python / что-либо еще. : -)