grep 命令
2024年11月1日大约 2 分钟
grep 是一个强大的文本搜索工具,常用于在文件或输出结果中搜索匹配的文本字符串。grep 可以根据指定的模式(通常是正则表达式)在文件或标准输入中查找匹配的行,并将结果输出。
基本语法
grep [选项] 搜索模式 文件名常用选项
-i:忽略大小写。-v:反向选择,即显示不匹配的行。-r:递归搜索目录中的文件。-l:显示包含匹配内容的文件名,不显示内容。-n:显示匹配内容所在的行号。-c:统计匹配的行数。-o:只输出匹配的内容。-E:使用扩展正则表达式(等同于egrep)。--color:为匹配到的文本着色显示(许多系统中为默认行为)。
示例
1. 简单搜索
grep "error" logfile.txt # 搜索文件 logfile.txt 中包含 "error" 的行2. 忽略大小写搜索
grep -i "error" logfile.txt # 忽略大小写,匹配 "error" 或 "Error" 等3. 反向选择
grep -v "error" logfile.txt # 显示不包含 "error" 的行4. 递归搜索
grep -r "TODO" /path/to/dir # 在指定目录及子目录中搜索 "TODO"5. 显示文件名
grep -l "error" *.log # 显示包含 "error" 的日志文件名6. 显示行号
grep -n "error" logfile.txt # 显示匹配行的行号7. 统计匹配行数
grep -c "error" logfile.txt # 统计匹配的行数8. 使用正则表达式
grep -E "error|warning" logfile.txt # 搜索 "error" 或 "warning"
grep "[0-9]\{3\}-[0-9]\{3\}-[0-9]\{4\}" contacts.txt # 搜索电话号码的格式9. 在命令输出中使用 grep
grep 可以与其他命令组合,用管道符 | 把前一个命令的输出作为输入传递给 grep。
ps aux | grep "root" # 查看 root 用户的进程
dmesg | grep "eth0" # 查看系统日志中与 eth0 相关的内容注意事项
- 文件匹配:使用通配符(如
*.txt)来批量匹配文件。 - 正则表达式:支持正则表达式,简单表达式可直接使用,复杂表达式建议使用
-E。