grep 用于在文件中搜索指定的模式(字符串或正则表达式),并输出匹配的行。
基本用法
grep [options] pattern [file...]
常用选项
-  基本搜索 grep pattern filename例子:搜索文件 example.txt中包含字符串hello的行。grep "hello" example.txt
-  忽略大小写 grep -i pattern filename例子:忽略大小写搜索 hello。grep -i "hello" example.txt
-  显示行号 grep -n pattern filename例子:显示匹配行的行号。 grep -n "hello" example.txt
-  递归搜索 grep -r pattern directory例子:递归搜索目录中的所有文件。 grep -r "hello" /path/to/directory
-  显示匹配的文件名 grep -l pattern filename例子:只显示包含匹配模式的文件名。 grep -l "hello" example.txt
-  仅显示匹配部分 grep -o pattern filename例子:只显示匹配的部分而不是整行。 grep -o "hello" example.txt
-  统计匹配行数 grep -c pattern filename例子:统计匹配行的数量。 grep -c "hello" example.txt
-  反转匹配 grep -v pattern filename例子:显示不包含匹配模式的行。 grep -v "hello" example.txt
-  显示前后行 grep -A num pattern filename # 显示匹配行及其后 num 行 grep -B num pattern filename # 显示匹配行及其前 num 行 grep -C num pattern filename # 显示匹配行及其前后 num 行例子:显示匹配行及其前后 2 行。 grep -C 2 "hello" example.txt
-  使用正则表达式 grep -E "pattern" filename例子:使用扩展正则表达式搜索。 grep -E "h(ello|i)" example.txt
组合选项
-  忽略大小写并显示行号 grep -in "hello" example.txt
-  递归搜索并显示匹配的文件名 grep -rl "hello" /path/to/directory
-  仅显示匹配部分并统计匹配行数 grep -co "hello" example.txt
高级用法
-  在文件列表中搜索 grep "hello" file1 file2 file3
-  在命令输出中搜索 dmesg | grep "error"
-  与 find结合使用find /path/to/search -type f -name "*.log" -exec grep "error" {} \;
-  与 xargs结合使用find /path/to/search -type f -name "*.log" | xargs grep "error"
-  使用 -P选项支持 Perl 正则表达式grep -P "\bhello\b" example.txt
实战示例
-  搜索包含 IP 地址的行 grep -E "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" example.txt
-  查找所有空行 grep -E "^$" example.txt
-  查找包含单词的行 grep -w "hello" example.txt
-  递归查找并排除某些目录 grep -r --exclude-dir={dir1,dir2} "hello" /path/to/directory
-  查找并显示匹配行的上下文 grep -C 3 "hello" example.txt
使用 grep 处理多行输出
 
-  搜索多行模式 grep -Pzo "(?s)start.*?end" example.txt
-  与 awk结合使用awk '/start_pattern/,/end_pattern/' example.txt | grep "middle_pattern"