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.