Dan Track wrote:
Hi
I appreciate this is off-topic but I would be grateful for some help on this. Basically,I want to add a few lines after matching a couple of lines in a file using sed, can someone please tell me how to do this.
Lines to match
server 10.33.45.3 server ldap.example.com server orion
I want to comment these lines so they become:
# server 10.33.45.3 # server ldap.example.com # server orion
Then append these lines after the commented lines
server fire.example.com server earth.example.com server space.example.com
So I should end up with:
# server 10.33.45.3 # server ldap.example.com # server orion
server fire.example.com server earth.example.com server space.example.com
Please bear in mind there is a lot of other text in this file not just the above and all the other text should remain untouched.
I don't think you can match only when you hit three lines in succession because sed is supposed to operate on one line at a time, which is what I think you are asking for. If all you want to do is comment out each of those lines and add some new ones, you could try the quick and dirty way:
$ cat testfile server 10.33.45.3 server ldap.example.com server orion $ cat testfile | sed -e 's/^server 10.33.45.3$/# server 10.33.45.3/g' -e 's/^server ldap.example.com$/# server ldap.example.com/g' -e 's/^server orion$/# server orion\n\nserver fire.example.com\nserver earth.example.com\nserver space.example.com/g' # server 10.33.45.3 # server ldap.example.com # server orion
server fire.example.com server earth.example.com server space.example.com
But if your lines are out of order, then you might end up with something like this:
$ cat testfile2 server 10.33.45.3 server orion server ldap.example.com $ cat testfile2 | sed -e 's/^server 10.33.45.3$/# server 10.33.45.3/g' -e 's/^server ldap.example.com$/# server ldap.example.com/g' -e 's/^server orion$/# server orion\n\nserver fire.example.com\nserver earth.example.com\nserver space.example.com/g' # server 10.33.45.3 # server orion
server fire.example.com server earth.example.com server space.example.com # server ldap.example.com