When working with Linux systems, whether you're debugging logs, scanning codebases, or extracting data from structured text, grep
is an essential command-line tool every developer should master.
In this guide, we'll walk you through everything from basic usage to advanced tips and tricks that will elevate your productivity and confidence in the terminal.
π What is grep
?
grep
stands for Global Regular Expression Print. It searches for patterns in input text files or streams and prints matching lines.
Whether youβre analyzing logs or searching for specific code usage, grep
is a lightning-fast and powerful utility.
β
Basic grep
Usage
Here are the most commonly used basic options:
grep "pattern" file.txt
Option | Description |
---|---|
-i |
Case-insensitive search |
-n |
Prefix each line with the line number |
-v |
Invert match (exclude lines matching text) |
-c |
Print only the count of matching lines |
-w |
Match whole word |
Examples:
grep "error" logs.txt # Simple match
grep -i "error" logs.txt # Case-insensitive match
grep -n "error" logs.txt # Show line numbers
grep -v "DEBUG" logs.txt # Show all except DEBUG lines
π Recursive Searching
You can search through directories recursively using:
grep -r "TODO" src/
This searches for "TODO" in all files within the src/
directory and its subdirectories.
π Using Regular Expressions with grep
By default, grep
supports basic regular expressions. Use -E
for extended regex.
Regex Pattern | Description |
---|---|
^word |
Line starts with word
|
word$ |
Line ends with word
|
a.b |
Matches a , any char, then b
|
[abc] |
Match any character a, b, or c |
[^abc] |
Match any character except a, b, or c |
.* |
Match any characters (wildcard) |
Example:
grep -E "^ERROR.*timeout$" logfile.txt
π― Context Around Matches
You can display lines before, after, or around matches using:
Option | Description |
---|---|
-A N |
Show N lines after the match |
-B N |
Show N lines before the match |
-C N |
Show N lines before and after |
grep -C 2 "panic" application.log
π§ Extracting the Match Itself
Use -o
to print only the matched string, not the entire line:
grep -o "ERROR[0-9]*" log.txt
This is helpful for extracting codes or tokens.
π Include or Exclude Specific Files
Limit grep to specific files using --include
or exclude some using --exclude
:
grep -r --include="*.py" "def" src/
grep -r --exclude="*.min.js" "console.log" .
π Match Only File Names
You can show only the names of files that match or don't match a pattern:
grep -l "main" *.java # List files that contain "main"
grep -L "TODO" *.py # List files that don't contain "TODO"
π§ͺ Use with Other Commands
grep
shines when used in pipelines:
ps aux | grep nginx
dmesg | grep -i error
cat access.log | grep "404"
π οΈ With find
for Powerful File Searching
Combine grep
with find
to search within specific files:
find . -name "*.html" -exec grep "meta" {} +
π₯ Highlight Matches in Color
To make matches stand out:
grep --color=always "error" logs.txt
Tip: Use with less
to preserve color:
grep --color=always "fail" app.log | less -R
π Searching for Multiple Patterns
You can search for multiple patterns using:
grep -E "ERROR|WARN|FATAL" logs.txt
Or load them from a file:
grep -f patterns.txt logs.txt
π Grep in Shell Scripts
Use grep
to add checks in shell automation:
if grep -q "CRITICAL" app.log; then
echo "Critical issue found!"
fi
π¦ Summary Table of grep
Options
Option | Meaning |
---|---|
-i |
Case-insensitive search |
-v |
Invert match |
-n |
Show line numbers |
-r |
Recursive |
-l |
Show filenames with matches |
-L |
Show filenames without matches |
-o |
Show only the match |
-A / -B / -C
|
Context before/after/around match |
--color |
Highlight output |
-E |
Use extended regex |
-f |
Load patterns from file |
π Final Thoughts
grep
is a small tool with massive power. When mastered, it becomes your best companion for log inspection, code audits, or data extraction. Combined with regex and Linux pipelines, grep
becomes a mini search engine at your fingertips.
Absolutely! To become a power user on Linux, you should master a core set of commands across various categories: file operations, process management, networking, scripting, text processing, and system monitoring.
Hereβs a curated list of essential Linux commands to master, grouped by purpose, with examples and short explanations.
ποΈ 1. File and Directory Operations
Command | Description |
---|---|
ls |
List files and directories |
cd |
Change directory |
pwd |
Show current path |
cp |
Copy files or directories |
mv |
Move/rename files or directories |
rm |
Remove files or directories |
mkdir |
Create a directory |
touch |
Create a new empty file |
find |
Search for files in a directory hierarchy |
stat |
Show file details |
tree |
Show directory tree (install with sudo apt install tree ) |
Examples:
cp file.txt backup/file.txt
find /var/log -name "*.log"
π 2. Text Processing Commands
Command | Description |
---|---|
cat |
Display file contents |
less / more
|
View large files page by page |
head / tail
|
Show first/last N lines of a file |
cut |
Cut out sections of a file or output |
awk |
Pattern scanning and processing language |
sed |
Stream editor for filtering and transforming text |
tr |
Translate or delete characters |
sort |
Sort lines in a file |
uniq |
Remove duplicate lines (usually used with sort ) |
wc |
Word, line, character, and byte count |
diff |
Compare files line by line |
xargs |
Build and execute command lines from input |
Examples:
awk '{print $1}' data.txt
cut -d: -f1 /etc/passwd
sort names.txt | uniq
π§ 3. System Monitoring and Process Management
Command | Description |
---|---|
top / htop
|
Live system monitoring (htop is more interactive) |
ps |
List running processes |
kill / killall
|
Terminate a process |
nice / renice
|
Set/change process priority |
uptime |
How long the system has been running |
free |
Memory usage |
df |
Disk usage of file systems |
du |
Disk usage of files/directories |
vmstat |
System performance |
iostat |
CPU and I/O statistics |
Examples:
ps aux | grep nginx
kill -9 1234
du -sh /var/log/*
π 4. Networking Commands
Command | Description |
---|---|
ping |
Test network connectivity |
traceroute |
Show route packets take |
netstat / ss
|
Show network connections |
curl |
Transfer data from or to a server |
wget |
Download files from the internet |
dig / nslookup
|
DNS lookup |
ifconfig / ip
|
Network interfaces (use ip instead of ifconfig ) |
nmap |
Port scanner (install with sudo apt install nmap ) |
Examples:
curl -I https://example.com
ss -tuln
dig google.com
π 5. Permissions and User Management
Command | Description |
---|---|
chmod |
Change file permissions |
chown |
Change file owner/group |
umask |
Default permission mask |
id |
Show user/group IDs |
whoami |
Current user |
sudo |
Run command as another user (usually root) |
adduser / useradd
|
Create user |
passwd |
Set/change user password |
Examples:
chmod +x script.sh
chown user:group file.txt
sudo useradd devuser
π¦ 6. Package Management
Ubuntu/Debian:
sudo apt update
sudo apt install nginx
sudo apt remove apache2
RHEL/CentOS:
sudo yum install httpd
Arch Linux:
sudo pacman -S git
π 7. Compression and Archiving
Command | Description |
---|---|
tar |
Archive files |
gzip / gunzip
|
Compress/decompress using gzip |
zip / unzip
|
Compress/decompress using zip format |
Examples:
tar -czvf backup.tar.gz /home/user/
unzip project.zip
π§ͺ 8. Shell Tricks & Utilities
Command | Description |
---|---|
alias |
Create command shortcuts |
history |
View previously run commands |
!! |
Run previous command |
!n |
Run nth command from history |
man |
Manual for any command |
which |
Show the location of a command |
time |
Measure execution time |
sleep |
Pause execution |
watch |
Re-run command at intervals |
π 9. Scripting Basics
Write a simple shell script:
#!/bin/bash
echo "Hello, $USER"
date
Make it executable:
chmod +x myscript.sh
π§° Bonus: Power Combos
find . -name "*.log" | xargs grep "ERROR"
du -sh * | sort -hr | head -10
ps aux | grep java | awk '{print $2}' | xargs kill -9
π Conclusion
Mastering these Linux commands gives you superpowers on the terminal. Start by learning the basics and slowly experiment with the advanced tools and combinations. The Linux shell is like a Lego boxβonce you know the pieces, you can build anything.
Top comments (0)
Some comments may only be visible to logged-in visitors. Sign in to view all comments.