Ich muss eine bestimmte Zeile in einer Konfigurationsdatei aktualisieren. Die Zeile, die ich aktualisieren muss, ist unten. Ich möchte das Feld SERVICE_NAME = OriginalValue mit SERVICE_NAME = NewVaule aktualisieren. Leider ist der 'OriginalValue' keine feste Zeichenfolge. Es besteht aus alphabetischen Zeichen (oben und unten), Zahlen und Punkten.Aktualisieren Sie eine Zeile in der Konfigurationsdatei von Bash-Skript mit sed/awk oder anderen Tool
Auch die SERVICE_NAME ist in mehreren Zeilen und ich möchte nur die Zeile aktualisieren, die jdbc_url enthält.
Der Artikel, den ich ausprobiert habe, ist unten, aber ich muss nur bis zur ersten Klammer ersetzen.
sed -i '/s_apps_jdbc_connect_descriptor/s/SERVICE_NAME.*)/SERVICE_NAME=NewValue/' work.xml
Ich bin mir nicht sicher, wie es weitergeht. Die einzige Voraussetzung ist, dass der Befehl von bash ausführbar ist und Tools verwendet, die sich in einer vernünftigen Linux-Distribution befinden.
Diese etwa so einfach wie 'sed' Befehle erhalten. Wie konntest du nicht einmal nahe kommen? – Barmar
Hinzufügen von Kontext: Der SERVICE_NAME ist in mehreren Zeilen und ich möchte nur die Zeile aktualisieren, die jdbc_url enthält. – Rajesh
Setzen Sie das in die Frage. Die Lösung besteht darin, einen Adressausdruck zu verwenden, der dem Kontext vor dem 's ///' -Befehl entspricht. – Barmar