我有一个文件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 是否存在于 [default] 和下一个[
字符之间。如果存在,则退出1
,否则,转到下一sed
行,执行插入操作。
GNU sed 版本 4.1.5
答案1
您可以使用 sed 脚本执行此操作,或者像您所做的那样使用分支仅执行一次 sed,但是由于您要求更好的方法,我会使用专用的更通用的脚本,更容易适应。毕竟,明天您可能想将“lookandfeel”更改为“newgeneric”,或将“serverURL”更改为“/forms/lservlet/debugmore”。例如: