Mastering grep: 12 Powerful Ways to Search and Filter Files on Linux
This guide walks you through installing grep, then demonstrates twelve practical techniques—from locating installed packages and filtering configuration files to counting matches, recursive searches, and using extended regular expressions—empowering you to efficiently search and process text on any Linux system.
Grep is a ubiquitous, pre‑installed command‑line utility on all Linux distributions for searching text patterns in files. If it is missing, install it with your package manager (e.g., sudo apt-get install grep for Debian/Ubuntu or sudo yum install grep for RHEL/CentOS/Fedora).
1. Search installed packages
List all installed .deb packages and filter for Python entries: sudo dpkg -l | grep -i python The output shows package names, versions, and descriptions, helping you identify which Python versions and related modules are present.
2. Filter file contents
Remove comment lines (starting with #) from an Apache configuration file: sudo grep -v "#" /etc/apache2/sites-available/default-ssl The -v option inverts the match, printing only non‑matching lines.
3. Find specific MP3 files
Combine find with grep to locate all MP3s by artist JayZ that are not remixes:
sudo find . -name "*.mp3" | grep -i JayZ | grep -vi "remix"4. Show surrounding lines
Use -A (after) and -B (before) to display context lines around a match. A handy mnemonic is -A = after, -B = before:
sudo ifconfig | grep -A 4 eth0 sudo ifconfig | grep -B 2 UP5. Show centered context
The -C option prints the matching line plus a specified number of lines before and after (centered):
sudo ifconfig | grep -C 2 lo6. Count matches
Count how many times a pattern appears without piping to wc -l:
sudo ifconfig | grep -c inet67. Display line numbers
When debugging source code, -n shows the line number of each match:
sudo grep -n "main" setup.py8. Recursive search
Search all files under the current directory tree for a string:
sudo grep -r "function" *9. Exact word match
Use -w to match whole words only, avoiding partial matches:
sudo ifconfig | grep -w "RUNNING" sudo ifconfig | grep -w "RUN"10. Search compressed files
zgrepworks like grep on gzip‑compressed logs:
sudo zgrep -i error /var/log/syslog.2.gz11. Extended regular expressions
Use egrep or grep -E to enable extended regex features (e.g., +, ?, |, parentheses):
sudo grep -E "pattern" file12. Fixed‑string search
fgrep(or grep -F) searches for literal strings without interpreting them as regular expressions. It can read patterns from a file: sudo fgrep -f file_full_of_patterns.txt file_to_search.txt These examples illustrate how grep can be combined with pipes, other utilities, and its many options to perform sophisticated text processing tasks, automate scripts, or create cron jobs for regular monitoring.
ITPUB
Official ITPUB account sharing technical insights, community news, and exciting events.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
