GNU/Linux >> Linux Esercitazione >  >> Linux

trova il testo corrispondente e sostituisci la riga successiva

Un modo:file di esempio

$ cat file
Cygwin
Unix
Linux
Solaris
AIX

Usando sed, sostituendo la riga successiva dopo il pattern 'Unix' con 'hi':

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

Per la tua domanda specifica:

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

Questo potrebbe funzionare per te (GNU sed):

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

!b nega l'indirizzo precedente (regexp) e interrompe qualsiasi elaborazione, terminando i comandi sed, n stampa la riga corrente e poi legge la successiva nello spazio del modello, c cambia la riga corrente nella stringa che segue il comando.


Funziona. Additionaly è interessato a menzionare che se scrivi,

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

Nota le due n, sostituisce dopo due righe e così via.


Linux
  1. Utilizzo di sed per trovare e sostituire file di testo in Linux

  2. Utilizzo dei comandi Sed,ex e perl per trovare e sostituire un testo in Linux

  3. Come sostituire una stringa in un file?

  4. Vi e Vim Editor:12 potenti esempi di ricerca e sostituzione

  5. Trova e sostituisci nello scripting della shell

Come utilizzare sed per trovare e sostituire la stringa nei file

Come utilizzare il comando SED per trovare e sostituire la stringa nei file

Come trovare e sostituire testo, parola o stringa in un file

Come trovare e sostituire il testo in Vim

Tutorial Unix Sed:trova e sostituisci testo all'interno di un file usando RegEx

Come utilizzare Sed per trovare e sostituire una stringa in un file