grep是Linux/Unix系统中一个强大的文本搜索工具,全称是"Global Regular Expression Print"。以下是grep的主要用法:
grep [选项] 模式 [文件...]
-i:忽略大小写
bash
grep -i "error" logfile.txt-v:反向匹配,显示不包含模式的行
bash
grep -v "success" results.log-w:全词匹配
bash
grep -w "word" document.txt-x:整行匹配
bash
grep -x "exact line" file.txt-n:显示匹配行的行号
bash
grep -n "pattern" file.txt-c:统计匹配的行数
bash
grep -c "error" logfile.txt-l:只显示包含匹配项的文件名
bash
grep -l "main" *.c-L:显示不包含匹配项的文件名-o:只输出匹配的部分
bash
grep -o "[0-9]\+" data.txt-A n:显示匹配行及其后n行
bash
grep -A 3 "exception" log.txt-B n:显示匹配行及其前n行
bash
grep -B 2 "fatal" error.log-C n:显示匹配行及其前后各n行
bash
grep -C 2 "warning" system.log-r 或 -R:递归搜索目录
bash
grep -r "function" /path/to/dir/--include:指定搜索的文件模式
bash
grep -r --include="*.py" "import" .--exclude:排除特定文件模式
bash
grep -r --exclude="*.tmp" "pattern" .基本正则表达式:
grep "a.*b" file.txt # 匹配a和b之间有任意字符的行
扩展正则表达式(使用-E或egrep):
grep -E "error|warning" logfile.txt
常用正则表达式:
^:行首$:行尾.:任意单个字符*:前导字符零次或多次[ ]:字符集合[^ ]:不在字符集合中的字符搜索多个文件:
grep "pattern" file1.txt file2.txt
使用管道与其他命令结合:
ps aux | grep "nginx"
统计匹配次数:
grep -o "word" file.txt | wc -l
搜索压缩文件:
zgrep "error" /var/log/syslog.*.gz
高亮显示匹配结果:
grep --color=auto "pattern" file.txt
使用固定字符串(禁用正则):
grep -F "$var" file.txt
grep是一个非常灵活的工具,通过组合不同的选项可以满足各种文本搜索需求。