Я думаю, что это то, что вы хотите.
$cat file | awk 'BEGIN{foundPAT1=0; foundPAT2=0;} {if($0=="PAT1"){foundPAT1=1;next} if($0=="PAT2"){foundPAT2+=1;next} if(foundPAT2==3)exit; if(foundPAT1) print;}'
Это будет ждать, пока не найдет PAT1, затем напечатает, пока PAT2 не будет найден 3 раза, и они выйдут из файла.Это исключит PAT * из вывода, вы можете включить их, удалив операторы «next», которые заставляют awk переходить на следующую строку.