Сравнить и объединить конфигурационный файл в CentOS

Я пытался настроить авто-обновление (для нескольких серверов) bash-скрипта через cron для файла конфигурации (на основе текста), загружая новый файл каждый день и заменяя его напрямую. Скрипт работает отлично, однако есть случай, когда иногда каждому серверу нужно будет иметь определенные настройки, отличные от основного файла конфигурации, например, одна из стандартной строки конфигурации будет:

port_defined=1,2,3 

в то время как для некоторых серверов потребуется:

 port_defined=1,2,3,4,5,6 

Я могу вручную изменить эту конфигурационную строку на соответствующем сервере, однако она будет перезаписываться снова каждый раз при запуске сценария автоматического обновления.

Итак, вопрос, могу ли я сделать один скрипт bash для загрузки файла конфигурации ссылок, а затем сначала сравнить его с локальным файлом конфигурации (на соответствующем сервере) для каких-либо различий, а затем слить его?

Под «слиянием» я подразумеваю сочетание правильной линии:

 port_defined=1,2,3,4,5,6 

а не две отдельные строки:

 port_defined=1,2,3 port_defined=1,2,3,4,5,6 

One Solution collect form web for “Сравнить и объединить конфигурационный файл в CentOS”

Вы действительно хотите объединить списки ценностей? То есть

 port_defined=1,3,5 port_defined=2,4,123 

следует объединить в

 port_defined=1,2,3,4,5,123 

Если это так, вы можете попробовать

 BEGIN { FS = "=" } NR == FNR && /ports_defined/ { ports=$2 } NR > FNR { if ($1 == "ports_defined") { ports = ports "," $2 split(ports, p, ",") for (i in p) { if (!num[p[i]]) { result = result "," p[i] num[p[i]] = 1 } } print $1 "=" substr(result, 2) } else { print } } 
  • Печатать строки, если шаблон не сопоставляется
  • Как вставить содержимое файла в строку в bash
  • Невозможно выполнить замену в программе sed
  • Как заменить путь в файле новым путем с помощью sed?
  • У Busybox ASH внутри initrd есть проблема, когда трубопроводный тройник
  • Удалить строки со значением ниже (или выше) порога
  • Как извлечь первое целое из текстовой строки в столбце файла с разделителями табуляции?
  • Заменить непечатаемые символы в perl и sed
  • Как удалить все между двумя символами с помощью sed?
  • Захватить определенное содержимое файла
  • linux + ssh + выполняет две задачи в одном ssh и печатает в CSV
  • Linux и Unix - лучшая ОС в мире.