In my last articles I had shown you the arguments to be used with sed to add or append any character in the beginning or end of the line and to ignore whitespace while grepping for a pattern so that the grep does not fails if there is an extra whitespace character between two words or sentence.
Here our requirement is to add multiple lines after a pattern is matched in a newline which can be before or after the match based upon the requirement
Below is our sample file /tmp/file
This is line one
This is line two
This is line three
This is line four
This is line two
This is line three
This is line four
Here in we have to put below content
your text 1
your text 2
your text 3
your text 2
your text 3
as per below requirement
- one line before the string is matched
- one line after the string is matched
Example 1
Here we will add our content one line before the string is matched
Solution
# sed '/This is line two/iyour text 1nyour text 2nyour text 3' /tmp/file
This is line one
your text 1
your text 2
your text 3
This is line two
This is line three
This is line four
This is line one
your text 1
your text 2
your text 3
This is line two
This is line three
This is line four
Example 2
Here we will add our content one line after the string is matched
Solution
# sed '/This is line two/ayour text 1nyour text 2nyour text 3' /tmp/file
This is line one
This is line two
your text 1
your text 2
your text 3
This is line three
This is line four
This is line one
This is line two
your text 1
your text 2
your text 3
This is line three
This is line four
How to do "in place" replacement in a file?
This can be done using "-i" flag with sed command as shown in below example.
# sed -i '/This is line two/ayour text 1nyour text 2nyour text 3' /tmp/file
IMPORTANT NOTE: Do not use in place replacement this unless you are very sure the command will not impact anything else, it is always recommended to use "i.bak" which will take a backup of the target file before doing the in place replacement
# sed -i.bak '/This is line two/ayour text 1nyour text 2nyour text 3' /tmp/file
I hope the article was useful.