Einfacher Linux-Befehlszeilenbefehl zum Ändern einer Option in einer INI-ähnlichen Konfigurationsdatei

Ich suche nach einer generischen Befehlszeilenlösung, mit der ich eine Konfigurationsoption in einer Konfigurationsdatei (ini-ähnliches Format) hinzufügen oder ändern kann.

Die meisten Linux-Konfigurationsdateien verwenden ein INI-ähnliches Format, mit # und; als Kommentar und mit Option = Wert.

Hauptsächlich bin ich auf der Suche nach etwas, das Dateinamen, Option und Wert annehmen würde, und das die Konfiguration entsprechend ändert.

Ich möchte dies verwenden, um einige Skripts für die automatische Bereitstellung zu schreiben. Ich habe kein Problem damit, Tools zu verwenden, die nicht standardmäßig unter Debian oder Ubuntu installiert sind, solange sie in den Standarddistributionsrepositorys vorhanden sind (da ich bei Bedarf eine apt-get-Installation xxx durchführen kann).

Beispiel:change-config /etc/default/nginx ULIMIT '"-n 4096"'

Das erwartete Ergebnis wäre zu habenULIMIT="-n 4096" in der Nginx-Datei. Wenn es bereits existiert und denselben Wert hat, sollte es offensichtlich nichts tun. Wenn es existiert, wäre es in Ordnung, die alte Zeile zu kommentieren und die neue hinzuzufügen.

Hinweis: Diese Konfigurationsdateien können Leerzeichen / Tabulatoren zwischen den Parametern enthaltenULIMIT = "..." ist immer noch der gleiche Befehl. Aus diesem Grund habe ich nach etwas Besserem als Sed gesucht, da es viele Eckfälle zu bewerten gibt.

Außerdem möchte ich das Rad nicht neu erfinden, und ich bezweifle, dass ich der erste bin, der nach einer Lösung für diese Art von Problem sucht.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage