grep
是 Linux
和 Unix
系统中用于搜索文本的强大命令之一。它通过指定的模式(通常是正则表达式
)在文件或标准输入中搜索匹配的行,并输出这些行。
基本用法
grep [选项] PATTERN [FILE...]
- PATTERN:要搜索的模式(字符串或正则表达式)。
- [FILE…]:要搜索的文件名列表。如果省略文件名,grep 会从标准输入读取数据。
常用选项
-i
:忽略大小写。搜索时忽略大小写。
grep -i "pattern" file.txt
-v
:反向匹配 : 输出不匹配PATTERN的行,即不包含PATTERN的行。
grep -v "pattern" file.txt
-r
或-R
:递归搜索目录。在目录及其子目录中递归搜索PATTERN
grep -r "pattern" /opt/local/var
-l
:显示匹配的文件名:仅显示包含匹配行的文件名,而不是具体的行内容。
grep -l "pattern" *.txt
-L
:显示不匹配的文件名:显示不包含匹配行的文件名。
grep -L "pattern" *.txt
-n
:显示匹配行的行号:在输出中显示匹配行的行号。
grep -n "pattern" file.txt
-c
:显示匹配的行数:输出每个文件中匹配PATTERN的行数。
grep -c "pattern" file.txt
-o
:仅输出匹配的部分:仅显示匹配的字符串,而不是整个行。
grep -o "pattern" file.txt
-H
:显示文件名 : 即使只搜索一个文件,也显示文件名。
grep -H "pattern" file.txt
-A
:显示匹配行及之后的几行
grep -A 3 "pattern" file.txt
# 显示匹配行及其后3行。
-B
:显示匹配行及之前的几行
grep -B 3 "pattern" file.txt
# 显示匹配行及其前3行
-C
:显示匹配行及上下文几行
grep -C 3 "pattern" file.txt
# 显示匹配行及其前后3行
-P
: grep 使用 Perl 兼容正则表达式(PCRE),这比传统的基本正则表达式(BRE)和扩展正则表达式(ERE)更强大。它允许使用更复杂的正则表达式语法,如非捕获组、正向/反向查找、断言等。
grep -oP '@\K\w+\.\w+' emails.txt
# 提取所有的电子邮件地址
正则表达式
grep
支持基本正则表达式(BRE
)和扩展正则表达式(ERE
),扩展模式可以使用 grep -E
或 egrep
.
:匹配任意单个字符
grep 'b.t' file.txt
# 匹配 bat、bit、but 等。
^
:匹配行首
grep '^pattern' file.txt
# 匹配以 pattern 开头的行。
$
:匹配行尾
grep 'pattern$' file.txt
# 匹配以 pattern 结尾的行。
*
:匹配前一个字符的零次或多次出现
grep 'ba*t' file.txt
# 匹配 bt、bat、baat 等。
[]
:匹配字符类中的任意单个字符
grep '[aeiou]' file.txt
# 匹配包含任意[]内字母开头的行。
|
:逻辑或,匹配左边或右边的模式(使用 -E)
grep -E 'pattern1|pattern2' file.txt
# 匹配 pattern1 或 pattern2。
\
:转义字符
grep '\.' file.txt
# 匹配实际的点字符 .
示例
- 搜索文件中包含特定字符的行
grep "hello" file.txt
- 在多个文件中搜索特定的字符
grep "hello" file1.txt file2.txt
- 统计包含特定字符的行数
grep -c "hello" file.txt
- 递归搜索包含特定字符的文件
grep -r "hello" /opt/local/var
- 忽略大小写搜索特定字符
grep -i "hello" file.txt
- 显示匹配行的上下文
grep -C 2 "error" logfile.txt
标签:grep,pattern,命令,详解,搜索,file,匹配,txt
From: https://blog.csdn.net/promise524/article/details/141114061