Thursday, March 17, 2022

[SOLVED] Insert multiple lines into a file after specified pattern using shell script

Issue

I want to insert multiple lines into a file using shell script. Let us consider my input file contents are: input.txt:

abcd
accd
cdef
line
web

Now I have to insert four lines after the line 'cdef' in the input.txt file. After inserting my file should change like this:

abcd
accd
cdef
line1
line2
line3
line4
line
web

The above insertion I should do using the shell script. Can any one help me?


Solution

Another sed,

sed '/cdef/r add.txt' input.txt

input.txt:

abcd
accd
cdef
line
web

add.txt:

line1
line2
line3
line4

Test:

sat:~# sed '/cdef/r add.txt' input.txt
abcd
accd
cdef
line1
line2
line3
line4
line
web

If you want to apply the changes in input.txt file. Then, use -i with sed.

sed -i '/cdef/r add.txt' input.txt

If you want to use a regex as an expression you have to use the -E tag with sed.

sed -E '/RegexPattern/r add.txt' input.txt


Answered By - sat
Answer Checked By - Marilyn (WPSolving Volunteer)