目录
一、概述
二、基本语法
1、语法
2、常用选项
3、获取帮助
三、示例
1. 搜索文件中的字符串
2. 忽略大小写搜索
3. 显示匹配行的行号
4. 反向搜索
5. 递归搜索
6. 使用扩展正则表达式
7. 列出包含匹配项的文件
8. 显示匹配行的上下文
9. 使用正则表达式
10. 只匹配完整的单词
11. 显示不匹配的行
12. 显示文件名但不显示匹配内容
13. 显示匹配的内容而非整行
四、扩展说明
1、正则表达式
2、文件列表
3、文件名和目录
4、环境变量
一、概述
grep 是 Linux 和 Unix 系统中非常强大的文本搜索工具,它用于在文件中查找符合指定模式的行。grep 的名字来源于“Global Regular Expression Print”,即全局正则表达式打印。这个命令最初是在 Unix 系统中开发的,现在也是所有类 Unix 系统(包括 Linux)的标准工具之一。
grep 使用正则表达式来搜索文本,并将匹配的行打印出来。该命令广泛用于文件内容的搜索、过滤和统计。
二、基本语法
1、语法
grep [选项] 模式 [文件...]
模式:要搜索的文本模式,可以是简单的字符串,也可以是复杂的正则表达式。
文件:要搜索的文件列表。如果未指定文件,grep 会从标准输入(stdin)读取数据。
2、常用选项
有如下常用选项
-c:仅显示匹配的行数,而不是匹配的内容。
-r 或 -R:递归搜索目录下的所有文件。
-A n:显示匹配行及其后 n 行。
-B n:显示匹配行及其前 n 行。
-C n 或 --context=n:显示匹配行及其前后各 n 行。
-i 或 --ignore-case:忽略大小写差异。
-v 或 --invert-match:显示不匹配模式的行。
-n 或 --line-number:显示匹配行的行号。
-l 或 --files-with-matches:只列出包含匹配项的文件名。
-L 或 --files-without-match:只列出不包含匹配项的文件名。
-r 或 --recursive:递归地在目录中搜索。
-H 或 --with-filename:在输出中总是显示文件名。
-h 或 --no-filename:在输出中从不显示文件名(当搜索多个文件时有用)。
-C 或 --context:显示上下文行。
-A 或 --after-context:显示匹配行之后的上下文行。
-B 或 --before-context:显示匹配行之前的上下文行。
-E 或 --extended-regexp:使用扩展正则表达式。
-F 或 --fixed-strings:将模式视为固定字符串而不是正则表达式。
-w 或 --word-regexp:仅匹配整个单词。
-o 或 --only-matching:只显示匹配的部分。
-m 或 --max-count:限制匹配的最大数量。
3、获取帮助
在命令行中输入指令:
grep --help
出现如下图所示的帮助信息:
三、示例
1. 搜索文件中的字符串
grep "hello" file.txt
在 file.txt 中搜索包含 "hello" 的行。
执行结果如下:
2. 忽略大小写搜索
grep -i "hello" file.txt
在 file.txt 中搜索包含 "hello"、"Hello"、"HELLO" 等的行,忽略大小写。
执行结果如下:
3. 显示匹配行的行号
grep -n "hello" file.txt
在 file.txt 中搜索包含 " hello " 的行,并显示这些行的行号。
执行结果如下:
4. 反向搜索
grep -v "error" log.txt
在 log.txt 中搜索不包含 "error" 的所有行。
5. 递归搜索
grep -r "function" /path/to/directory
在 /path/to/directory 目录及其子目录下递归搜索包含 "function" 的行。
6. 使用扩展正则表达式
grep -E "word1|word2" file.txt
在 file.txt 中搜索包含 "word1" 或 "word2" 的行。
7. 列出包含匹配项的文件
grep -l "example" dir/
8. 显示匹配行的上下文
grep -C 2 "example" file.txt
9. 使用正则表达式
grep -E "example|test" file.txt
10. 只匹配完整的单词
grep -w "example" file.txt
11. 显示不匹配的行
grep -v "example" file.txt
12. 显示文件名但不显示匹配内容
grep -l "example" /path/to/directory/
13. 显示匹配的内容而非整行
grep -o "example" file.txt
四、扩展说明
grep 命令因其灵活性和强大的正则表达式支持,在文本处理和数据分析中非常有用。掌握 grep 的基本用法和常用选项,可以根据具体需求定制搜索条件,可以大大提高在 Linux 系统下处理文本数据的效率。
1、正则表达式
grep 支持基本正则表达式 (BRE) 和扩展正则表达式 (ERE)。默认情况下使用 BRE,而使用 -E 选项时使用 ERE。
2、文件列表
如果没有指定文件名,则 grep 会从标准输入读取数据。
3、文件名和目录
grep 可以处理单个文件、多个文件甚至是目录树。
4、环境变量
可以通过设置环境变量来改变 grep 的行为,比如 GREP_OPTIONS。
文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。