3.4 KiB
3.4 KiB
string searching using grep in Linux
1. Basic Usage:
The fundamental syntax of grep is:
grep [options] pattern [file...]
Example:
grep "error" logfile.txt# This searches for the word "error" in logfile.txt.
2. Case Sensitivity:
- By default, grep IS case-sensitive.
- Use
-ifor case-insensitive search:grep -i "eRRor" logfile.txt# This will return all occurances of "error" in any case sensitivity. Error, erRor, ERROR, etc...
3. Regular Expressions:
grep supports regular expressions for powerful pattern matching.
- . (dot): Matches any single character
- *: Matches zero or more of the preceding character
- ^: Matches the start of a line
- $: Matches the end of a line
- : Matches any single character in brackets
Example:
grep "^Error" logfile.txt# Lines starting with "Error"grep "failed$" logfile.txt# Lines ending with "failed"grep "t[ae]st" logfile.txt# Matches "test" or "tast"
4. Extended Regular Expressions:
Use -E option or egrep command for extended regex:
grep -E "Error|Warning" logfile.txt# Searches for "Error" or "Warning" in "logfile.txt"egrep "Error|Warning" logfile.txt# Same as above
5. Inverting the Match:
-v option inverts the match, showing lines that don't match:
grep -v "success" logfile.txt# Match any line that does not contain the work "success" in logfile.txt
6. Displaying Line Numbers:
-n option shows line numbers:
grep -n "error" logfile.txt
7. Counting Matches:
-c option counts the number of matching lines:
grep -c "error" logfile.txt
8. Showing Context:
-A n: Shows n lines after the match-B n: Shows n lines before the match-C n: Shows n lines before and after the match
Example:
grep -C 2 "critical error" logfile.txt# Match "critical error" inside "logfile.txt" and show 2 lines above/below each occurance.
9. Recursive Search:
-r option searches recursively through directories:
grep -r "TODO" /path/to/project
10. Matching Whole Words:
-w option matches whole words only:
grep -w "log" logfile.txt
11. Displaying Filename:
-H: Always print filename-h: Never print filenamegrep -H "error" *.log
12. Quiet Mode:
-q option suppresses output, useful in scripts:
if grep -q "error" logfile.txt; then
echo "Errors found"
fi
13. Using grep with Pipes:
grep works well with pipes for filtering output:
ps aux | grep "nginx"
14. Multiple Patterns:
Use `-e` option for multiple patterns:
- `grep -e "error" -e "warning" -e "critical" logfile.txt`
15. Reading Patterns from a File:
`-f` option reads patterns from a file:
`grep -f patterns.txt logfile.txt`
16. Binary Files:
`-a` Process binary files as text
- --binary-files=without-match: Assume binary files don't match
`grep -a "string" binary_file`
17. Colorizing Output:
--color option highlights matches:
grep --color "error" logfile.txt
18. Excluding Files:
--exclude option excludes files from the search:
grep "TODO" --exclude="*.o" -r .
19. Including Only Certain Files:
--include option includes only specified files:
grep "function" --include="*.c" -r .
20. Null-Separated Output:
-Z option outputs a zero byte after filename:
grep -lZ "error" *.log | xargs -0 rm