У меня есть небольшой скрипт awk, который делает некоторые изменения в локальном файле (для файла Java .properties
, чтобы дать вам представление). Это часть сценария развертывания, влияющего на группу пользователей.awk: Либо измените, либо добавьте строку на основе ее существования.
Я хочу иметь возможность устанавливать значения по умолчанию, оставляя остальную часть файла по желанию пользователя. Это означает добавление строки конфигурации, если она отсутствует, изменяя ее, если она есть, оставляя все остальное как есть.
В настоящее время я использую что-то вроде этого:
# 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/все будет намного проще. :-)
То, что вы выложили, кажется, AWK, не СЭД. – 2009-05-07 15:01:18
Я был настолько обернут письмом, что даже не заметил. Исправленный. – Tomalak
Perl/Python/Все было бы намного проще ;-) –