Linux 中的 grep 命令是文本搜索工具命令,其名称源自 Global Regular Expression Print (全局正则表达式打印)的缩写。grep 命令能够对指定的文件或标准输入进行搜索,并输出包含匹配文本的行。
文章目录
基本语法:
grep [options] pattern [files]
[options]:可选参数,用于定制grep的功能。pattern:要搜索的字符串,可以是普通字符串或正则表达式。[files]:可选参数,要搜索的文件名或路径。如果省略,则默认从标准输入读取(通常配合管道符|使用)。
一、常见用法
01、搜索文件中的文本
查找文件 example.txt 中包含 error 的行。
grep "error" example.txt
02、忽略大小写搜索
查找 Warning 或 warning 的行。
grep -i "warning" example.txt
03、在多个文件中搜索
查找目录 logs/ 中所有文件中包含 failed 的行。
grep "failed" logs/*
04、显示匹配的行号
查找并显示行号。
grep -n "TODO" main.py
05、反向匹配
显示文件中不包含“success”的行。
grep -v "success" example.txt
06、递归搜索
在当前目录及其子目录中查找包含 DEBUG 的行。
grep -r "DEBUG" .
07、显示上下文行
显示匹配行及其前两行和后两行。
grep -C 2 "critical error" system.log
08、只显示文件名
如果只想知道哪些文件包含“import”而不是具体行。
grep -l "import" *.py
09、查找日志文件中的错误信息
在处理大型日志文件时,查找包含 ERROR 、WARNING 或 CRITICAL 的行。
grep -E "ERROR|WARNING|CRITICAL" application.log
10、查找IP地址
假设有一个网络日志文件,提取其中的所有 IP 地址。
grep -oE "[0-9]{1,3}(\.[0-9]{1,3}){3}" network.log
11、统计关键字出现次数
统计“failure”在文件中出现的次数。
grep -c "failure" example.txt
12、查找多种文件中的函数定义
查找 .c 或 .h 文件中所有以 int 开头的函数定义,使用递归搜索并且只输出匹配的行。
grep -r -E "^int .*\(.*\)" --include=*.{c,h}
13、查找不包含特定字符串的文件
找到当前目录中所有不包含 DEBUG 的 .log 文件。
grep -rL "DEBUG" --include=*.log
二、常用参数解析
-i:忽略大小写- 使用了该参数后,
grep命令将不区分大小写。 - 例如,
grep -i “hello” file.txt将匹配hello、Hello、HELLO等。
- 使用了该参数后,
-v:反向匹配- 使用该参数后,
grep命令将输出不包含指定字符串的行。 - 例如,
grep -v “error” file.txt将输出不包含error字符串的所有行。
- 使用该参数后,
-r或-R:递归查找- 使用该参数后,
grep命令将在指定目录下递归地查找匹配的文件。 - 例如,
grep -r “keyword” /path/to/directory将在目录下的所有文件中查找包含关键字keyword的行。
- 使用该参数后,
-n:显示行号- 使用该参数后,
grep命令将在输出结果中显示匹配行的行号。 - 例如,
grep -n “pattern” file.txt将显示文件中包含pattern的行号和内容。
- 使用该参数后,
-l:只显示文件名- 使用该参数后,
grep命令将只显示包含匹配字符串的文件名,而不显示具体匹配内容。 - 例如,
grep -l “keyword” file*.txt将只显示包含关键字keyword的文件名。
- 使用该参数后,
-c:显示匹配的行数- 使用该参数后,
grep命令将统计文件中包含匹配字符串的行数。 - 例如,
grep -c “pattern” file.txt将显示文件中包含pattern的行数。
- 使用该参数后,
-w:只匹配整个单词- 默认情况下,
grep会匹配含有模式的行,使用-w选项可以让grep只匹配整个单词。
- 默认情况下,
-x:使用这个选项可以确保只输出完全匹配的行。-A num:显示匹配行及其后num行的内容-B num:显示匹配行及其前num行的内容。-C num:显示匹配行及其前后num行的内容。-F:将模式视为固定字符串而非正则表达式。-E:使用扩展正则表达式(相当于egrep)。-o:只显示匹配的字符串(而不是整行)。-L:输出不包含匹配内容的文件名。--color:高亮显示匹配的文本,便于快速定位。
三、正则表达式
grep 命令支持使用正则表达式进行模式匹配,以下是一些常用的正则表达式的表示方法:
.(点号):表示匹配任意单个字符。*(星号):表示匹配前面的字符出现0次或多次。?:表示匹配前面的字符出现0次或1次。[]:用于表示匹配方括号内的任意一个字符。^(脱字符):表示匹配行首。$(美元符号):表示匹配行尾。<:匹配单词首。>:匹配单词尾。{n}:匹配恰好n个前导字符。{n,}:匹配至少n个前导字符。{n,m}:匹配至少n个且不超过m个前导字符。|:或运算符。
四、提高效率的小技巧
- 使用
--color=auto:高亮显示匹配的文本,便于快速定位。 - 结合
tee保存搜索结果:将输出结果保存到文件中,并在终端中同时显示。 - 例如,
grep "pattern" file.txt | tee results.txt。
通过掌握 grep 命令及其选项和正则表达式的使用,用户可以高效地查找文件、分析日志、提取信息等。
1680

被折叠的 条评论
为什么被折叠?



