Jeden způsob:Ukázkový soubor
$ cat file
Cygwin
Unix
Linux
Solaris
AIX
Pomocí sed nahraďte další řádek za vzorem 'Unix' výrazem 'hi':
$ sed '/Unix/{n;s/.*/hi/}' file
Cygwin
Unix
hi
Solaris
AIX
Pro vaši konkrétní otázku:
$ sed '/<key>ConnectionString<\/key>/{n;s/<string>.*<\/string>/<string>NEW STRING<\/string>/}' your_file
<key>ConnectionString</key>
<string>NEW STRING</string>
Toto by vám mohlo fungovat (GNU sed):
sed '/<key>ConnectionString<\/key>/!b;n;c<string>changed_value</string>' file
!b
neguje předchozí adresu (regexp) a přeruší jakékoli zpracování, čímž ukončí příkazy sed, n
vytiskne aktuální řádek a poté přečte další do prostoru vzoru, c
změní aktuální řádek na řetězec následující za příkazem.
Funguje to. Dále je zajímavé zmínit, že pokud píšete,
sed '/<key>ConnectionString<\/key>/!b;n;n;c<string>changed_value</string>' file
Všimněte si dvou n, nahradí se po dvou řádcích a tak dále.