Skip to content
Advertisement

find matching text and replace next line

I’m trying to find a line in a file and replace the next line with a specific value. I tried sed, but it seems to not like the n. How else can this be done?

The file looks like this:

<key>ConnectionString</key>
<string>anything_could_be_here</string>

And I’d like to change it to this

<key>ConnectionString</key>
<string>changed_value</string>

Here’s what I tried:

sed -i '' "s/<key>ConnectionString</key>n<string></string>/<key>ConnectionString</key>n<string>replaced_text</string>/g" /path/to/file

Advertisement

Answer

This might work for you (GNU sed):

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

!b negates the previous address (regexp) and breaks out of any processing, ending the sed commands, n prints the current line and then reads the next into the pattern space, c changes the current line to the string following the command.

User contributions licensed under: CC BY-SA
9 People found this is helpful
Advertisement