Tente:
sed '/Line1/{N; /\nString$/b; s/\n/\nString\n/}' file
Limitação: Se duas linhas com Line1
aparecerem em uma linha, isso pode ou não fazer o que você deseja.
Exemplo
Vamos considerar este arquivo de teste:
$ cat file
Line1
String
Line2
String
Line3
Line1
Line2
E, vamos aplicar nosso comando:
$ sed '/Line1/{N; /\nString$/b; s/\n/\nString\n/}' file
Line1
String
Line2
String
Line3
Line1
String
Line2
Como funciona
-
Line1/{...}
Isso só executa os comandos em chaves se a linha atual corresponder à regex
Line1
. -
N
Isso lê a próxima linha e a anexa à linha atual com as duas linhas separadas por uma nova linha.
-
/\nString$/b
Se a segunda linha corresponder à regex
\nString$
, pule o restante dos comandos ("branch",b
). -
s/\n/\nString\n/
Isso substitui a nova linha que separa a primeira e a segunda linhas por nova linha, seguidas por
String
seguido por outra nova linha.