Use awk with a flag to trigger the print when necessary:
$ awk '/abc/{flag=1;next}/mno/{flag=0}flag' file
def1
ghi1
jkl1
def2
ghi2
jkl2
How does this work?
/abc/matches lines having this text, as well as/mno/does./abc/{flag=1;next}sets theflagwhen the textabcis found. Then, it skips the line./mno/{flag=0}unsets theflagwhen the textmnois found.- The final
flagis a pattern with the default action, which is toprint $0: ifflagis equal 1 the line is printed.
For a more detailed description and examples, together with cases when the patterns are either shown or not, see How to select lines between two patterns?.