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
Here in we have to put below content
as per below requirement
Example 1
Here we will add our content one line before the string is matched
Solution
To do in place replacement
Example 2
Here we will add our content one line after the string is matched
Solution
To do in place replacement
Example 3
You can add your content to a file for eg create a file /tmp/mydata with our content i.e.
Now you can use below 'sed' command to append the content of "mydata" to /tmp/file"
To do in place replacement
How to configure a Clustered Samba share using ctdb in Red Hat Cluster
How to delete an iscsi-target from openfiler and Linux
How to perform a local ssh port forwarding in Linux
How to use yum locally without internet connection using cache?
What is umask and how to change the default value permanently?
Understanding Partition Scheme MBR vs GPT
How does a successful or failed login process works in Linux
How to find all the process accessing a file in Linux
How to exclude multiple directories from du command in Linux
How to configure autofs in Linux and what are its advantages?
How to resize software raid partition in Linux
How to configure Software RAID 1 mirroring in Linux
How to prevent a command from getting stored in history in Linux
Below is our sample file /tmp/file
This is line one
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
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/i\your text 1\nyour text 2\nyour 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
To do in place replacement
# sed -i '/This is line two/i\your text 1\nyour text 2\nyour text 3' /tmp/file
Example 2
Here we will add our content one line after the string is matched
Solution
# sed '/This is line two/a\your text 1\nyour text 2\nyour 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
To do in place replacement
# sed -i '/This is line two/a\your text 1\nyour text 2\nyour text 3' /tmp/file
Example 3
You can add your content to a file for eg create a file /tmp/mydata with our content i.e.
your text 1
your text 2
your text 3
Now you can use below 'sed' command to append the content of "mydata" to /tmp/file"
# sed '/This is line two/r /tmp/mydata' /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
To do in place replacement
# sed -i '/This is line two/r /tmp/mydata' /tmp/file
IMPORTANT NOTE: |
Do not use this unless you are very sure the command will not impact anything else, it is always recommended to take a backup of such file where you plan to do in place replacement |
Follow the below links for more tutorials
How to find the path of any command in LinuxHow to configure a Clustered Samba share using ctdb in Red Hat Cluster
How to delete an iscsi-target from openfiler and Linux
How to perform a local ssh port forwarding in Linux
How to use yum locally without internet connection using cache?
What is umask and how to change the default value permanently?
Understanding Partition Scheme MBR vs GPT
How does a successful or failed login process works in Linux
How to find all the process accessing a file in Linux
How to exclude multiple directories from du command in Linux
How to configure autofs in Linux and what are its advantages?
How to resize software raid partition in Linux
How to configure Software RAID 1 mirroring in Linux
How to prevent a command from getting stored in history in Linux