← /articles
2025-11-23 · 5 min read
Devlopment/5 min read

Mastering sed, grep, and Essential Linux Utilities - From Beginner to Guru

#linux

A hands-on deep dive into the power of the Linux command line.

Whether you’re a developer, data engineer, or DevOps professional, mastering the Linux command line is a game changer. In this post, we’ll explore some of the most powerful and versatile tools at your disposal: grep, sed, awk, find, xargs, and more. This guide takes you from beginner basics to advanced wizardry with real-world examples and deep explanations.

Why Master the Command Line?

Linux CLI tools are:

  • Efficient: Perform complex tasks quickly without writing full programs.
  • Composable: Combine tools using pipes (|) to create powerful workflows.
  • Stream-based: Process large files without loading them fully into memory.

Knowing how to use these tools means you can automate tasks, troubleshoot faster, and transform data in seconds.

🔍 grep: Searching Like a Pro

grep is your go-to tool for finding lines in text files that match a pattern. It’s incredibly fast and supports regular expressions.

Basic Usage

grep "hello" file.txt

Find all lines containing the word hello in the file file.txt.

Options You’ll Use Often

grep -i "hello" file.txt       # Case-insensitive search
grep -v "DEBUG" logfile.log    # Show lines that do NOT contain DEBUG
grep -r "TODO" .               # Recursively search all files under current directory
grep "ERROR" service-*.log     # Search for keyword "ERROR" in current directory for all files that start with service- and ends with .log

Intermediate & Advanced

grep -n "error" app.log         # Show line numbers for matches
grep -A 3 -B 2 "ERROR" logs.txt # Show 3 lines after and 2 lines before the match

This is especially helpful when scanning logs to understand the context around an error.

Perl Regex (Advanced)

grep -Po 'user: \K.*' config.txt

The -P enables Perl-compatible regex and \K resets the match start, returning only the part after user:.

✂️ sed: The Stream Editor

sed reads and edits text on the fly. Think of it as a supercharged version of find-and-replace, but for streams of text.

Replacements and Deletions

sed 's/foo/bar/' file.txt         # Replace first occurrence of 'foo' with 'bar'
sed 's/foo/bar/g' file.txt        # Replace all occurrences in each line
sed -i 's/localhost/127.0.0.1/' config.txt # Edit the file in place

Pattern-Based Line Manipulation

sed '/^$/d' file.txt     # Delete blank lines
sed '/^#/d' file.txt     # Delete lines starting with # (comments)
sed '2d' file.txt        # Delete the second line
sed '1,5d' file.txt      # Delete lines 1 through 5

Block Extraction

sed -n '/START/,/END/p' file.txt

This prints only the lines between the patterns START and END, inclusive. Useful for extracting blocks of logs or code.

🧠 awk: Data Crunching Wizardry

awk is a full-fledged scripting language for processing columnar data, especially useful for reports or structured text.

Basics

awk '{print $1}' file.txt
awk -F, '{print $2}' file.csv

The first example prints the first word in each line. The second uses -F, to split the line by commas.

Filtering and Summing

awk '$3 > 50' data.txt                        # Show lines where the third column is greater than 50
awk '{sum += $2} END {print sum}' file.txt    # Add up the values in the second column

Formatting

awk 'BEGIN {print "Start"} {print $1} END {print "End"}' file.txt

You can use BEGIN and END blocks for headers and footers.

🧰 Text Shaping: cut, paste, sort, uniq

These tools help you shape and analyze tabular or structured text.

cut -d',' -f1,3 file.csv         # Extract 1st and 3rd columns from CSV
paste file1 file2                # Merge lines from file1 and file2 side by side
sort file.txt | uniq            # Remove duplicate lines
sort file.txt | uniq -c | sort -nr  # Count duplicates and sort by frequency

🔗 Pipes & Combinations

Combining tools is where the magic happens.

Top 5 IPs in Logs

awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -5

This command chain extracts the first column (IP address), counts occurrences, and shows the top 5.

Remove Duplicates and Count

cat names.txt | sort | uniq -c | sort -n

You can use this to analyze how many times a name appears.

🛠️ find + xargs = Power Duo

find is used to locate files, and xargs applies commands to those results.

Search and Act

find . -name "*.log" -size +10M | xargs grep "OutOfMemoryError"
find /tmp -name "*.tmp" | xargs rm

Safe with Spaces

find . -name "*.mp4" -print0 | xargs -0 ls -lh

The -print0 and -0 combo ensures that filenames with spaces or special characters are handled safely.

🧪 Advanced Regex Patterns

Greedy vs Lazy

grep -P "a.*b" file.txt   # Greedy match, includes longest span
grep -P "a.*?b" file.txt  # Lazy match, includes shortest span

Lookaheads and Lookbehinds

grep -Po 'foo(?=bar)' file.txt

Finds foo only if it’s followed by bar (lookahead).

💡 Real-World Snippets

Rename .txt to .bak

ls *.txt | sed 's/.*/mv & &.bak/' | bash

Generates and executes mv file.txt file.txt.bak for each .txt file.

Extract Emails

grep -Eo "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-z]{2,}" file.txt

This pattern matches most valid email addresses in text files.

Monitor Logs in Real-Time

tail -f app.log | grep --line-buffered "ERROR"

See errors as they are logged, great for live debugging.

🧾 Quick Cheat Sheet

ToolFunctionExample
grepPattern searchgrep "foo" file
sedReplace/edit linessed 's/foo/bar/g' file
awkData extraction/formattingawk '{print $1}'
cutSlice fieldscut -d',' -f2 file.csv
sortSort linessort file.txt
uniqDeduplicateuniq file.txt
xargsApply commandxargs rm
findSearch filesfind . -name "*.log"
trTranslate/delete charstr 'a-z' 'A-Z'
jqParse JSONjq '.key' file.json

🚀 Final Thoughts

Once you master sed, grep, and friends, you’ll start solving complex problems in one-liners. You’ll process logs, wrangle data, and automate mundane tasks like a true CLI wizard.

Treat the shell as a playground for problem-solving, and the more you use these tools, the more fluent you become.

Happy hacking! 🧙‍♂️


Thanks for reading!

Follow along for more deep-dives into systems engineering, architecture, and security research.

← Back to ArticlesWritten by Sahil Singh Rawat