У меня есть файл formsweb.cfg
что может выглядеть примерно так
# These match variables (e.g. %form%) in the baseHTML file. Their values
# may be overridden by specifying them in the URL query string
# (e.g. "http://myhost.example.com/forms/frmservlet?form=myform&width=700")
# or by overriding them in a specific, named configuration (see below)
[default]
# Default Oracle Forms values:
#baseHTML=base.htm
#baseHTMLjpi=basejpi.htm
width=1366
height=734
[sepwin]
separateFrame=True
lookandfeel=Generic
[debug]
serverURL=/forms/lservlet/debug
В этом файле отсутствует пара "ключ-значение" clientDPI=96
который должен располагаться в [default]
раздел этого файла.
На более чем 100 сайтах для некоторых файлов может быть установлен clientDPI, для других - нет.
Я хочу добавить значение к файлам, в которых его сейчас нет.
Это sed
сценарий, который я написал. Есть ли "лучше" способ сделать это?
sed -n '/\[default\]/,/^\[/ {
/^clientDPI/q1
}' formsweb.cfg &&
sed '/\[default\]/,/^\[/ {
/^\[default\]/ {
a\
clientDPI=96
}
}' -i.bak.${RANDOM} formsweb.cfg
Он проверяет, существует ли clientDPI между [по умолчанию] и следующим [
персонаж. Если это произойдет, он завершится с помощью 1
в противном случае он перейдет к следующему sed
линия, которая делает вставку.
GNU sed версии 4.1.5
Вы можете сделать это с помощью сценария sed, как вы это сделали, или используя ветки, чтобы выполнить sed только один раз, но, поскольку вы просите лучший способ, я бы использовал специальный более общий сценарий, который легче адаптировать. В конце концов, завтра вы, возможно, захотите изменить "lookandfeel" на "newgeneric" или "serverURL" на "/ forms / lservlet / debugmore". Например: