2024年5月30日发(作者:)

grep 高级用法

grep 是一个强大的文本搜索工具,它使用正则表达式来搜索文本,

并打印匹配的行。以下是一些 grep 的高级用法:

1、递归搜索:在目录及其所有子目录中的文件里搜索文本。

bash

grep -r "pattern" /path/to/directory/

2、显示匹配行及其行号:

bash

grep -n "pattern" filename

3、只显示匹配的文件名:

bash

grep -l "pattern" /path/to/directory/*

4、显示不匹配的行:

bash

grep -v "pattern" filename

5、使用扩展正则表达式 (例如:使用 ?, +, {}, | 等):

bash

grep -E "pat(tern1|tern2)" filename

6、显示匹配项周围的行(例如,显示匹配项前后的2行):

bash

grep -A 2 -B 2 "pattern" filename

7、计数匹配的行数:

bash

grep -c "pattern" filename

8、高亮匹配的文本(通常需要配合 --color):

bash

grep --color=auto "pattern" filename

9、从文件中读取模式:假设你有一个文件 ,里面包含了

很多要搜索的模式,每行一个。你可以这样使用:

bash

grep -f filename

10、使用 Perl 兼容的正则表达式 (PCRE):这提供了更多的功能和灵

活性。例如,递归地搜索目录中所有的 .txt 文件,找到包含数字的

行:

bash

grep -rP 'd' /path/to/directory/*.txt

11、反向引用:当使用 -P (Perl兼容的正则表达式) 时,你可以使用

反向引用来匹配重复的模式。例如,查找文件中连续重复两次的单词:

bash

grep -P 'b(w+)s+1b' filename

12、忽略大小写:使用 -i 选项来执行大小写不敏感的搜索。

bash

grep -i "pattern" filename

13、只显示匹配的部分:使用 -o 选项。例如,从文件中提取所有的

邮箱地址:

bash

grep -oE '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}' filename

14、统计各个模式出现的次数:结合 -o 和 -c 使用:

bash

grep -ocE 'pattern1|pattern2' filename

这只是 grep 的一些高级用法。由于其功能的丰富性,它经常被用于

各种复杂的文本处理任务中。