Using sed to insert text between lines

Hello, I am trying to insert a section of text between lines in another text file.

The new lines to be inserted are:

abcd[0].efgh[N].zzzz=blah
abcd[0].efgh[N].xxxx=blah

Where N = 0 to 2

Original File:

abcd[0].efgh[0].wwxx=aaaaa
abcd[0].efgh[0].yyzz=bbbbb
abcd[0].efgh[1].wwxx=aaaaa
abcd[0].efgh[1].yyzz=bbbbb
abcd[0].efgh[2].wwxx=aaaaa
abcd[0].efgh[2].yyzz=bbbbb

Change to:

abcd[0].efgh[0].wwxx=aaaaa
abcd[0].efgh[0].yyzz=bbbbb
abcd[0].efgh[0].zzzz=blah
abcd[0].efgh[0].xxxx=blah
abcd[0].efgh[1].wwxx=aaaaa
abcd[0].efgh[1].yyzz=bbbbb
abcd[0].efgh[1].zzzz=blah
abcd[0].efgh[1].xxxx=blah
abcd[0].efgh[2].wwxx=aaaaa
abcd[0].efgh[2].yyzz=bbbbb
abcd[0].efgh[2].zzzz=blah
abcd[0].efgh[2].xxxx=blah

This is what I have done so far (and it works with Linux GNU sed), but I am looking for a more elegant way to do it. Perhaps using backreferencing?

sed "{
/efgh\[0\].yyzz=bbbbb/a abcd[0].efgh[0].wwxx=aaaaa\nabcd[0].efgh[0].xxxx=blah
/efgh\[1\].yyzz=bbbbb/a abcd[0].efgh[1].wwxx=aaaaa\nabcd[0].efgh[1].xxxx=blah
/efgh\[2\].yyzz=bbbbb/a abcd[0].efgh[2].wwxx=aaaaa\nabcd[0].efgh[2].xxxx=blah
}" dataset.txt

Any ideas?

Thanks in advance.

Does it need to be sed ?

I'm happy to use awk, perl or python. Just wondered if it was possible using sed?

Thanks.

Actually, thinking twice, it is. Try

sed 's/\(efgh\[\)\([[:digit:]]\)\(\].yyzz=bbbbb\)/\1\2\3\nabcd[0].efgh[\2].wwxx=aaaaa\nabcd[0].efgh[\2].xxxx=blah/' file
abcd[0].efgh[0].wwxx=aaaaa
abcd[0].efgh[0].yyzz=bbbbb
abcd[0].efgh[0].wwxx=aaaaa
abcd[0].efgh[0].xxxx=blah
abcd[0].efgh[1].wwxx=aaaaa
abcd[0].efgh[1].yyzz=bbbbb
abcd[0].efgh[1].wwxx=aaaaa
abcd[0].efgh[1].xxxx=blah
abcd[0].efgh[2].wwxx=aaaaa
abcd[0].efgh[2].yyzz=bbbbb
abcd[0].efgh[2].wwxx=aaaaa
abcd[0].efgh[2].xxxx=blah
1 Like