grep 是一个在 Linux 系统中用于搜索文本的命令行工具。它可以根据给定的模式(正则表达式)在文件中搜索匹配的行,并将其输出到标准输出。grep 命令的基本语法如下:
grep [选项] 模式 [文件...]
[选项]:可以是一些标志,用于指定搜索的行为,比如-i(忽略大小写)、-r(递归搜索目录)、-n(显示行号)等。模式:是要搜索的文本模式,可以是简单的文本,也可以是正则表达式。[文件...]:是要在其中搜索匹配模式的文件列表。如果没有指定文件,grep将从标准输入中读取数据。
常用选项
-i:忽略大小写。-v:反转匹配,显示不包含模式的行。-r或-R:递归搜索目录中的文件。-l:仅显示包含匹配模式的文件名。-n:显示匹配行的行号。-c:显示匹配的行数。-H:显示匹配的文件名。-A NUM:显示匹配行及其后 NUM 行。-B NUM:显示匹配行及其前 NUM 行。-C NUM:显示匹配行及其前后各 NUM 行。
示例
-
基本搜索
grep 'hello' file.txt -
忽略大小写
grep -i 'hello' file.txt -
递归搜索目录
grep -r 'hello' /path/to/directory -
显示行号
grep -n 'hello' file.txt -
显示匹配的文件名
grep -l 'hello' *.txt -
显示匹配行及其前后各两行
使用
-A(after),-B(before),或-C(context)选项:grep -A 3 "pattern" filename # 显示匹配行及其后 3 行 grep -B 2 "pattern" filename # 显示匹配行及其前 2 行 grep -C 2 "pattern" filename # 显示匹配行及其前后各 2 行 -
反转匹配(只显示不匹配的行)
grep -v 'hello' file.txt -
统计匹配的行数
grep -c 'hello' file.txt
结合正则表达式
grep 也支持正则表达式,可以使用 -E 选项来启用扩展正则表达式(等同于 egrep)。
grep -E 'pattern1|pattern2' file.txt
结合管道使用
grep 常与其他命令结合使用,通过管道符 | 进行数据传递。
ps aux | grep 'process_name'
以上是 grep 命令的一些基本用法和示例。通过组合不同的选项,grep 可以非常灵活地用于各种文本搜索任务。