Here's a **tiered ranking** of the most useful commands/syntax for each tool, based on frequency of use and power-to-weight ratio for real-world tasks: --- ### **S-Tier (Essential Daily Use)** | Tool | Top 3 Must-Know Commands | |------|--------------------------| | **grep** | `grep -i "pattern" file`
`grep -r "text" /dir/`
`grep -v "exclude" file` | | **awk** | `awk '{print $1}'`
`awk -F: '/pattern/{print $3}'`
`awk 'NR>1 && $3>100'` | | **sed** | `sed 's/old/new/g'`
`sed '/pattern/d'`
`sed -i.bak '...' file` | | **rsync** | `rsync -avz src/ dest/`
`rsync -avzP --delete src/ remote:dest/`
`rsync -av --exclude='*.tmp' src/ dest/` | --- ### **A-Tier (Power User Essentials)** | Tool | Next-Level Commands | |------|---------------------| | **grep** | `grep -A3 -B2 "context"`
`grep -E "(foo|bar)"`
`grep -oP 'regex(?=lookahead)'` | | **awk** | `awk 'BEGIN{FS=OFS=":"} {...}'`
`awk '{a[$1]++} END{for(k in a) print k,a[k]}'`
`awk '!seen[$0]++'` (dedup) | | **sed** | `sed -n '10,20p'` (range)
`sed '/start/,/end/d'`
`sed -e '1i\header' -e '$a\footer'` | | **rsync** | `rsync -av --link-dest=/prev/ src/ dest/` (hardlink backups)
`rsync -av --bwlimit=5000` (throttle)
`rsync -av --files-from=list.txt / remote:/` | --- ### **B-Tier (Specialized but Powerful)** | Tool | Niche Superpowers | |-------|-------------------| | **grep** | `grep --color=always \| less -R`
`grep -f patterns.txt`
`grep -Z \| xargs -0` (null-safe) | | **awk** | `awk -v var=value '...'`
`awk '{system("cmd " $1)}'`
`awk '@include "lib.awk"'` | | **sed** | `sed ':a;N;$!ba;s/\n/,/g'` (slurp+replace)
`sed '1~2d'` (every 2nd line)
`sed -E 's/(groups)/\U\1/'` (case conv) | | **rsync** | `rsync --daemon` (server mode)
`rsync -av --xattrs --acls` (metadata)
`rsync -av --compare-dest=/compare/ src/ dest/` | --- ### **C-Tier (Rare but Life-Saving)** | Tool | Expert Tricks | |------|--------------| | **grep** | `grep -P '(?<=lookbehind)'`
`grep --binary-files=text`
`grep -m 100` (stop after N matches) | | **awk** | `awk 'BEGIN{RS=""; FS="\n"}` (paragraph mode)
`awk -M 'BEGIN{print 2^100}'` (big math)
`awk -i inplace` (GNU awk 4.1+) | | **sed** | `sed 's/.*/\L&/'` (lowercase)
`sed '/pattern/{x;p;x;}'` (hold space)
`sed -f script.sed` | | **rsync** | `rsync --partial-dir=.rsync-partial`
`rsync --sockopts='SO_RCVBUF=65536'`
`rsync --remote-option='-T /tmp'` | --- ### **Tool-Specific Tier Explanations** **grep** - *S-Tier*: Covers 90% of search needs - *A-Tier*: Context and advanced regex - *B/C-Tier*: Rare flags for binary/encoding edge cases **awk** - *S-Tier*: Field processing covers most ETL tasks - *A-Tier*: Arrays and stats for log analysis - *B/C-Tier*: Rarely needed math/IO extensions **sed** - *S-Tier*: Basic substitutions dominate usage - *A-Tier*: Range operations for config files - *B/C-Tier*: Hold space and branching are niche **rsync** - *S-Tier*: Basic sync covers most backups - *A-Tier*: Delta transfers for large datasets - *B/C-Tier*: Daemon mode for enterprise --- ### **When to Reach for Each Tool** 1. **Quick text search?** → `grep` 2. **Columnar data?** → `awk` 3. **Find/replace?** → `sed` 4. **File sync?** → `rsync` **Pro Tip:** Combine them: ```bash grep "error" logs/ | awk '{print $3}' | sort | uniq -c | sed 's/^ *//' > counts.txt