Linux三剑客之grep命令使用教程
grep命令选项详解:从基础到进阶的实用指南
一、基本选项
1. -i
:忽略大小写(Case Insensitive)
- 含义:搜索时不区分字母大小写。
- 用法示例:
搜索包含"hello"的行,无论大小写:grep -i "hello" file.txt
- 示例数据(file.txt):
Hello World hello there Hi, HELLO! Goodbye
- 执行结果:
Hello World hello there Hi, HELLO!
- 应用场景:日志分析(如ERROR/error混用)、多语言文本处理。
2. -v
:反向匹配(Invert Match)
- 含义:显示不匹配指定模式的行。
- 用法示例:
排除包含"error"的日志行:grep -v "error" log.txt
- 示例数据(log.txt):
INFO: System started WARNING: Disk space low ERROR: Connection failed INFO: User logged in
- 执行结果:
INFO: System started WARNING: Disk space low INFO: User logged in
- 应用场景:过滤干扰信息(如系统日志中的非错误信息)。
3. -n
:显示行号(Line Number)
- 含义:在匹配的行前添加行号。
- 用法示例:
查找配置文件中包含"timeout"的行及其位置:grep -n "timeout" config.ini
- 示例数据(config.ini):
[database] host=localhost port=5432 timeout=300[server] max_connections=100 # default timeout value request_timeout=60
- 执行结果:
4:timeout=300 8:# default timeout value 9:request_timeout=60
- 应用场景:快速定位代码或配置文件中的问题行。
4. -c
:统计匹配行数(Count)
- 含义:仅返回匹配的行数,不显示具体内容。
- 用法示例:
统计日志中ERROR的出现次数:grep -c "ERROR" app.log
- 示例数据(app.log):
INFO: Starting application WARNING: Deprecated API call ERROR: Database connection failed ERROR: Invalid user input INFO: Process completed
- 执行结果:
2
- 应用场景:监控日志异常频率、统计特定关键词出现次数。
5. -w
:匹配完整单词(Word Regexp)
- 含义:仅匹配独立的单词,避免匹配子串。
- 用法示例:
查找包含"root"但不匹配"rooted"的行:grep -w "root" system.log
- 示例数据(system.log):
root logged in at 09:00 user data rooted successfully root permissions granted system rooted for testing
- 执行结果:
root logged in at 09:00 root permissions granted
- 应用场景:数据库字段名搜索、代码中变量名匹配。
6. -A/B/C
:上下文显示(Context Lines)
- 含义:
-A n
:显示匹配行及其后n
行。-B n
:显示匹配行及其前n
行。-C n
:显示匹配行及其前后各n
行。
- 用法示例:
查看配置文件中"[database]"部分的完整内容:grep -A 3 "\[database\]" config.ini
- 示例数据(config.ini):
[server] host=localhost port=8080[database] db_host=db.example.com db_port=5432 username=admin password=secret[logging] level=INFO file=app.log
- 执行结果:
[database] db_host=db.example.com db_port=5432 username=admin
- 应用场景:查看函数上下文、配置文件段落分析。