grep 是 Unix 和 Linux 系统中广泛使用的文本搜索工具,它允许用户搜索包含指定模式的文本行。以下是 grep 命令的基本用法及示例:
一、基本用法
bash
grep [选项] 模式 [文件...]
二、常用选项
-i:忽略大小写。-v:反向选择,显示不包含模式的行。-n:显示匹配行的行号。-l:显示包含匹配模式的文件名。-L:显示不包含匹配模式的文件名。-c:只输出匹配到的行数。-w:只匹配整个单词。-x:只匹配整行。-r或-R:递归搜索目录中的文件。-A NUM:匹配行及后面 NUM 行一起显示。-B NUM:匹配行及前面 NUM 行一起显示。-C NUM:匹配行及前后各 NUM 行一起显示。
三、正则表达式
grep 支持正则表达式,这使得它可以进行复杂的文本搜索。例如:
.:匹配任意单个字符。*:匹配前一个字符零次或多次。^:匹配行的开始。$:匹配行的结束。[]:匹配括号内的任意一个字符。|:表示或的关系,如a|b匹配a或b。():分组,用于后向引用。
四、示例
搜索文本
假设有一个文件 example.txt,内容如下:
bash
Hello World hello unix GREP is powerful
要在文件中搜索包含 "hello" 的行(忽略大小写),可以使用以下命令:
bash
grep -i "hello" example.txt
输出:
bash
Hello World hello unix
使用正则表达式
要在文件中搜索以 "G" 开头并以 "p" 结尾的单词,可以使用以下命令:
bash
grep -w "\bG\w*p\b" example.txt
输出:
bash
GREP is powerful
显示行号
要在文件中搜索包含 "World" 的行并显示行号,可以使用以下命令:
bash
grep -n "World" example.txt
输出:
bash
1:Hello World
反向选择
要在文件中搜索不包含 "unix" 的行,可以使用以下命令:
bash
grep -v "unix" example.txt
输出:
bash
Hello World GREP is powerful
递归搜索
要在目录 mydir 及其子目录中的所有文件中搜索包含 "error" 的行,可以使用以下命令:
bash
grep -r "error" mydir/