#!/bin/bash
s='PatternStart
line1
line2
PatternInside
line3
line4
PatternEnd
PatternStart
line1
line2
line3
PatternEnd'
awk 'flag{
buf = buf $0 ORS;
if (/PatternEnd/ && buf ~ /PatternInside/)
{printf "%s", buf; flag=0; buf=""}
}
/PatternStart/{buf = $0 ORS; flag=1}' <<< "$s"
IyEvYmluL2Jhc2gKcz0nUGF0dGVyblN0YXJ0CmxpbmUxCmxpbmUyClBhdHRlcm5JbnNpZGUKbGluZTMKbGluZTQKUGF0dGVybkVuZAoKUGF0dGVyblN0YXJ0CmxpbmUxCmxpbmUyCmxpbmUzClBhdHRlcm5FbmQnCgphd2sgJ2ZsYWd7CiAgICBidWYgPSBidWYgJDAgT1JTOwogICAgaWYgKC9QYXR0ZXJuRW5kLyAmJiBidWYgfiAvUGF0dGVybkluc2lkZS8pCiAgICAgICB7cHJpbnRmICIlcyIsIGJ1ZjsgZmxhZz0wOyBidWY9IiJ9Cn0KL1BhdHRlcm5TdGFydC97YnVmID0gJDAgT1JTOyBmbGFnPTF9JyA8PDwgIiRzIg==