Este é um ex one-liner. ( ex é a forma predecessora e com script de vi .)
printf '%s\n' '$?pattern2?/pattern1/d' x | ex file.txt
O x salva e sai. Altere-o para %p se você quiser apenas imprimir o arquivo alterado, mas não salvar as alterações (boas para testes).
$ significa última linha do arquivo; ?pattern2? é um endereço que significa o primeiro resultado de uma busca para pattern2 a partir da posição atual; /pattern1/ é um endereço de pesquisa avançada e d é o comando de exclusão de linha.
Use ex quando precisar de encaminhamento E para trás.
Você pode fazer a mesma coisa interativamente em vi ou Vim:
vim file.txt
Em seguida, digite
:$?pattern2?/pattern1/d
e pressione Enter.
Em seguida, salve e saia com :x Enter.