在 Linux 中,grep
是一个非常强大的命令行工具,用于在文件或输出中搜索匹配指定模式的文本。以下是 grep
的常见用法和详细示例:
基本语法
grep [选项] "模式" [文件]
常用选项
-i
:忽略大小写。-v
:反向匹配,即显示不符合模式的行。-n
:显示匹配行的行号。-r
/-R
:递归搜索目录中的所有文件。-c
:统计匹配的行数。-l
:仅显示包含匹配内容的文件名。-w
:只匹配整个单词。-A
:显示匹配行后面指定的行数。-B
:显示匹配行前面指定的行数。-C
:显示匹配行上下指定行数。
示例
1. 在文件中搜索特定字符串
grep "hello" file.txt
搜索 file.txt
中包含字符串 hello
的行。
2. 忽略大小写搜索
grep -i "hello" file.txt
搜索时忽略大小写,匹配 hello
、HELLO
或其他大小写组合。
3. 递归搜索目录
grep -r "error" /var/log/
在 /var/log/
目录及其子目录中的所有文件中搜索 error
。
4. 显示匹配行的行号
grep -n "main" code.c
在 code.c
文件中搜索 main
,并显示匹配的行号。
5. 反向匹配
grep -v "debug" log.txt
显示 log.txt
中不包含 debug
的行。
6. 显示匹配行的上下文
grep -C 2 "warning" log.txt
显示匹配 warning
的行以及上下 2 行。
7. 统计匹配的行数
grep -c "error" log.txt
统计 log.txt
中包含 error
的行数。
8. 匹配整个单词
grep -w "test" file.txt
只匹配 test
这个单词,而不会匹配 testing
或 atest
.
9. 搜索多个文件
grep "function" file1.txt file2.txt
在 file1.txt
和 file2.txt
中搜索包含 function
的行。
10. 搜索时使用正则表达式
- 匹配包含 “test” 或 “example” 的行:
grep -E "test|example" file.txt
- 匹配以 “error” 开头的行:
grep "^error" file.txt
- 匹配以 “.log” 结尾的行:
grep "\.log$" file.txt
注意事项
正则表达式:使用
grep -E
(等价于egrep
)支持扩展正则表达式。管道结合使用:
grep
经常与其他命令结合使用。例如:dmesg | grep "usb"
从
dmesg
输出中筛选包含usb
的行。颜色高亮:在某些系统中,
--color=auto
可以高亮匹配的部分:grep --color=auto "pattern" file.txt
如果你需要更多高级用法,随时可以提问! 😊