Stop trying to match patterns across multiple lines in grep
Text Processing (Grep/Sed/Awk)
Stop trying to match patterns across multiple lines in grep
🧩 The Challenge
Dealing with logs where a stack trace or an error message spans five different lines is a nightmare with standard grep. You just end up missing the context you actually need.
💡 The Fix
Perl-compatible regex in grep lets you treat the whole file as one single string, meaning you can finally match across line breaks without losing your mind.
grep -Pz '(?s)ERROR_STRING.*?\n.*?SUCCESS_STRING' /var/log/app.log
⚙️ Why It Works
Using the -P flag brings in the Perl engine, and the (?s) flag tells it to make the dot character match newlines too. It turns a multi-line headache into a simple string match.
🚀 Pro-Tip: Pipe the output to xargs -0 if you need to pass those found blocks to another tool.
Linux Tips & Tricks | © ngelinux.com | 9/8/2026
