Как с помощью SED заменить строку на несколько строк?
А чем не устраивает перенос строки с \n?
sed s/123456/Hello\nWorld/ file.txt 
или я неверно понял задачу?
Несколько строк заменить вряд ли выйдет, sed считывает данные построчно, поэтому там можно делать сложнее, но может подойдет что-то вроде такого:
sed -i -r "2,5s/.*/# deleted line/g" file.txt
Очистит строки со 2 по 5.
sed -i -r "/text1/,/text2/s/.*/# deleted line/g" file.txt
очистит строки между text1 и text2 включительно (все совпадения)
sed -i -r "/text1/,+2s/.*/# deleted line/g" file.txt
очистит строку где встретился text1 и две следующие
Для awk замена одной стоки: /123456/{sub( /.*/, "text")}
text может содержать \n для перевода строк.
А вот удалить несколько строк после нахождения совпадения поиска немного сложнее. Я бы уже написал коротенькую программу на перле вместо однострочника.