GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Finden Sie passenden Text und ersetzen Sie die nächste Zeile

Ein Weg:Musterdatei

$ cat file
Cygwin
Unix
Linux
Solaris
AIX

Mit sed die nächste Zeile nach dem Muster 'Unix' durch 'hi' ersetzen:

$ sed '/Unix/{n;s/.*/hi/}' file
Cygwin
Unix
hi
Solaris
AIX

Zu Ihrer konkreten Frage:

$ sed '/<key>ConnectionString<\/key>/{n;s/<string>.*<\/string>/<string>NEW STRING<\/string>/}' your_file
<key>ConnectionString</key>
<string>NEW STRING</string>

Das könnte für Sie funktionieren (GNU sed):

sed '/<key>ConnectionString<\/key>/!b;n;c<string>changed_value</string>' file

!b negiert die vorherige Adresse (regexp) und bricht jede Verarbeitung ab, wodurch die sed-Befehle beendet werden, n druckt die aktuelle Zeile und liest dann die nächste in den Musterbereich ein, c ändert die aktuelle Zeile in die Zeichenfolge nach dem Befehl.


Es klappt. Außerdem möchte ich das erwähnen, wenn Sie schreiben,

sed '/<key>ConnectionString<\/key>/!b;n;n;c<string>changed_value</string>' file

Beachten Sie die zwei n, es ersetzt nach zwei Zeilen und so weiter.


Linux
  1. Verwenden von sed zum Suchen und Ersetzen von Textdateien in Linux

  2. Verwenden von Sed-, Ex- und Perl-Befehlen zum Suchen und Ersetzen eines Textes in Linux

  3. Wie ersetze ich eine Zeichenfolge in einer oder mehreren Dateien?

  4. Vi- und Vim-Editor:12 leistungsstarke Beispiele zum Suchen und Ersetzen

  5. Suchen und ersetzen Sie Text in einer Datei zwischen einem Zeilenbereich mit sed

So verwenden Sie sed zum Suchen und Ersetzen von Zeichenfolgen in Dateien

So verwenden Sie den SED-Befehl zum Suchen und Ersetzen von Zeichenfolgen in Dateien

So suchen und ersetzen Sie Text, Wort oder Zeichenfolge in einer Datei

So finden und ersetzen Sie Text in Vim

Unix Sed Tutorial:Suchen und Ersetzen von Text in einer Datei mit RegEx

So verwenden Sie Sed zum Suchen und Ersetzen einer Zeichenfolge in einer Datei