Regex with grep, sed & awk
Also Known As
grep
sed
awk
text processing
regex linux
TL;DR
Three essential Linux text processing tools — grep for filtering lines, sed for stream editing, awk for field-based processing — all using regular expressions.
Explanation
grep: filter lines matching a pattern. grep -E for extended regex (ERE), grep -P for PCRE, grep -v to invert, grep -r for recursive. sed: stream editor — s/pattern/replacement/flags for substitution, d for delete, p for print. sed -i for in-place edit, sed -i.bak for backup. awk: field-based processing — splits input into fields ($1, $2...), supports conditions, arithmetic, and custom output. Essential combos: grep | awk for filter+format, sed | grep for transform+filter. For PHP log analysis, deployment scripts, and server administration.
Common Misconception
✗ grep, sed, and awk are interchangeable — each has a different primary purpose: grep filters, sed transforms line-by-line, awk processes structured tabular data with field access.
Why It Matters
Analysing PHP error logs, parsing nginx access logs, and automating config changes all require grep/sed/awk — knowing the right tool for each task is a core server administration skill.
Common Mistakes
- Using grep when awk is needed for field extraction — grep can't access specific fields.
- sed -i without .bak backup — irreversible in-place edits without testing first.
- Grepping binary files — add -a or convert to text first.
- POSIX regex with + ? | — these are ERE; use grep -E or egrep for extended regex.
Code Examples
✗ Vulnerable
# Log analysis without proper tools:
# Manually reading 500MB nginx log to find slow requests
# grep 'ERROR' app.log | wc -l -- correct but misses details
# sed s/foo/bar app.log > app.log -- truncates file! (can't read and write same file)
✓ Fixed
# grep — filter PHP errors in the last hour:
grep 'PHP Fatal error' /var/log/php/error.log | tail -100
# awk — extract IPs with > 100 requests from nginx log:
awk '{print $1}' /var/log/nginx/access.log \
| sort | uniq -c | sort -rn | head -20
# sed — replace DB host in config (with backup):
sed -i.bak 's/db.old.internal/db.new.internal/g' /var/www/app/.env
# Combined — show slow requests (> 1s) with their URLs:
awk '$NF > 1.0 {print $7, $NF}' /var/log/nginx/access.log \
| sort -k2 -rn | head -20
Tags
🤝 Adopt this term
£79/year · your link shown here
Added
16 Mar 2026
Edited
22 Mar 2026
Views
19
🤖 AI Guestbook educational data only
|
|
Last 30 days
Agents 0
No pings yet today
No pings yesterday
Amazonbot 6
Perplexity 3
Unknown AI 3
Ahrefs 2
Google 2
Also referenced
How they use it
crawler 15
pre-tracking 1
Related categories
⚡
DEV INTEL
Tools & Severity
🟢 Low
⚙ Fix effort: Medium
⚡ Quick Fix
Use grep -E for extended regex on PHP log files, sed for in-place fixes, and awk for field-based extraction — these three tools cover 90% of log analysis and text transformation tasks
📦 Applies To
bash
cli
🔗 Prerequisites
🔍 Detection Hints
PHP script doing text processing that grep/awk/sed would handle faster; no knowledge of shell text tools for server administration
Auto-detectable:
✗ No
grep
sed
awk
perl
⚠ Related Problems
🤖 AI Agent
Confidence: Low
False Positives: Medium
✗ Manual fix
Fix: Medium
Context: File