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.