У меня есть несколько систем 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
Очевидно, что я хочу, чтобы сценарий выполнял мою работу. У меня есть стандартный ш, Ksh, AWK, SED, Grep, Perl, сократить и т.д. Так как это 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 это будет некоторый тип фрагмента кода на основе оболочки, который я могу добавить к моему сценарию изменения , Я открыт для других вариантов, особенно если решение проще.
OP сказал: «Поскольку это AIX, у меня нет доступа к версиям GNU этих утилит». – ThisSuitIsBlackNot
Справа. Спасибо что подметил это. –
Я могу иногда работать с GNU, например, «sed -i». человек (1) все еще мой друг на том, что работает, а что нет. – IAmJeff