grep命令详解

grepLinuxUnix 系统中用于搜索文本的强大命令之一。它通过指定的模式(通常是正则表达式)在文件或标准输入中搜索匹配的行,并输出这些行。

基本用法

grep [选项] PATTERN [FILE...]
  • PATTERN:要搜索的模式(字符串或正则表达式)。
  • [FILE…]:要搜索的文件名列表。如果省略文件名,grep 会从标准输入读取数据。

常用选项

  1. -i:忽略大小写。搜索时忽略大小写。
grep -i "pattern" file.txt
  1. -v:反向匹配 : 输出不匹配PATTERN的行,即不包含PATTERN的行。
grep -v "pattern" file.txt
  1. -r -R:递归搜索目录。在目录及其子目录中递归搜索PATTERN
grep -r "pattern" /opt/local/var
  1. -l:显示匹配的文件名:仅显示包含匹配行的文件名,而不是具体的行内容。
grep -l "pattern" *.txt
  1. -L:显示不匹配的文件名:显示不包含匹配行的文件名。
grep -L "pattern" *.txt
  1. -n:显示匹配行的行号:在输出中显示匹配行的行号。
grep -n "pattern" file.txt
  1. -c:显示匹配的行数:输出每个文件中匹配PATTERN的行数。
grep -c "pattern" file.txt
  1. -o:仅输出匹配的部分:仅显示匹配的字符串,而不是整个行。
grep -o "pattern" file.txt
  1. -H:显示文件名 : 即使只搜索一个文件,也显示文件名。
grep -H "pattern" file.txt
  1. -A:显示匹配行及之后的几行
grep -A 3 "pattern" file.txt
# 显示匹配行及其后3行。
  1. -B:显示匹配行及之前的几行
grep -B 3 "pattern" file.txt
# 显示匹配行及其前3行
  1. -C:显示匹配行及上下文几行
grep -C 3 "pattern" file.txt
# 显示匹配行及其前后3行
  1. -P : grep 使用 Perl 兼容正则表达式(PCRE),这比传统的基本正则表达式(BRE)和扩展正则表达式(ERE)更强大。它允许使用更复杂的正则表达式语法,如非捕获组、正向/反向查找、断言等。
grep -oP '@\K\w+\.\w+' emails.txt
# 提取所有的电子邮件地址

正则表达式

grep 支持基本正则表达式(BRE)和扩展正则表达式(ERE),扩展模式可以使用 grep -Eegrep

  • .:匹配任意单个字符
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
# 匹配实际的点字符 .

示例

  1. 搜索文件中包含特定字符的行
grep "hello" file.txt
  1. 在多个文件中搜索特定的字符
grep "hello" file1.txt file2.txt
  1. 统计包含特定字符的行数
grep -c "hello" file.txt
  1. 递归搜索包含特定字符的文件
grep -r "hello" /opt/local/var
  1. 忽略大小写搜索特定字符
grep -i "hello" file.txt
  1. 显示匹配行的上下文
grep -C 2 "error" logfile.txt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值