【发布时间】:2015-06-12 05:55:41
【问题描述】:
我有几个带有配置文件的 AIX 系统,我们称之为 /etc/bar/config。该文件可能有也可能没有声明 foo 值的行。一个例子是:
foo = A_1,GROUP_1,USER_1,USER_2,USER_3
foo 行在所有系统上可能相同,也可能不同。不同的系统可能具有不同的值和不同的不同数量的值。我的任务是在所有系统的 config 文件中添加“最低限度”值。最低限度的线将如下所示。
foo = A_1,USER_1,SYS_1,SYS_2
如果该行不存在,我必须创建它。如果这条线确实存在,我必须合并两条线。使用我的示例,结果将是这样的。值的顺序无关紧要。
foo = A_1,GROUP_1,USER_1,USER_3,USER_2,SYS_1,SYS_2
显然我想要一个脚本来完成我的工作。我有标准的sh、ksh、awk、sed、grep、perl、cut 等。由于这是 AIX,我无法访问这些实用程序的 GNU 版本。
最初,我有一个包含这些命令的脚本来替换整个 foo 行。
cp /etc/bar/config /etc/bar/config.$$
sed "s/foo = .*/foo = A_1,USER_1,SYS_1,SYS_2/" /etc/bar/config.$$ > /etc/bar/config
但这只是替换了该行。它确实考虑了任何预先存在的配置,包括缺少的行。而且我正在脚本中进行其他配置修改,例如向其他文件添加完全唯一的行并重新启动进程,所以我perfer这是某种基于shell的代码sn-p我可以添加到我的更改脚本中。我对其他选项持开放态度,尤其是在解决方案更简单的情况下。
【问题讨论】: