fork(1) download
  1. #!/bin/bash
  2. s='PatternStart
  3. line1
  4. line2
  5. PatternInside
  6. line3
  7. line4
  8. PatternEnd
  9.  
  10. PatternStart
  11. line1
  12. line2
  13. line3
  14. PatternEnd'
  15.  
  16. awk 'flag{
  17. buf = buf $0 ORS;
  18. if (/PatternEnd/ && buf ~ /PatternInside/)
  19. {printf "%s", buf; flag=0; buf=""}
  20. }
  21. /PatternStart/{buf = $0 ORS; flag=1}' <<< "$s"
Success #stdin #stdout 0.01s 5416KB
stdin
Standard input is empty
stdout
PatternStart
line1
line2
PatternInside
line3
line4
PatternEnd