grep命令使用详解

目录

1. grep 作用

2. grep 完整语法结构

3. grep常用的参数总结

4. grep中常用正则表达式

4.1 基本常用正则表达式汇总

4.2 案例演示

4.2.1 过滤非空的行

4.2.2 找出names.txt中的未注释行,并过滤空行

4.2.3 输出以h开头的行,不区分大小写

4.2.4 输出以"。"结尾的行

4.2.5 匹配文本中至少包含一个 am 的

4.2.6 匹配文本中包含数字的行

4.3 扩展正则表达式使用

4.4 案例演示

4.4.1 筛选前一个字符包含e的的文本行


1. grep 作用

文本搜索工具,根据用户指定的“模式”(过滤条件),对目标文本逐行进行匹配,并打印输出匹配到的行。

模式:由正则表达式的元字符串及文本字符串所编写的过滤条件

2. grep 完整语法结构

grep   [options]   [pattern]   file

命令    参数         匹配模式      文件数据
  • 上述语法结构中,经常可配合下面的参数一起使用
常用参数解释
-i忽略大小写
-o仅显示匹配到目标字符串
-v显示不能被匹配到的字符串(反转)
-E支持使用扩展的正则表达式字符串
-q静默模式,不输出任何信息

3. grep常用的参数总结

常用参数解释
-v排除匹配结果
-n显示匹配行与行号
-i不区分大小写
-c只统计匹配行数
-E使用egrep命令
-o只输出匹配内容
-w只输出过滤的单词
-F不适用正则表达式
-l列出包含匹配项的文件名
-L列出不包含匹配项的文件名

4. grep中常用正则表达式

4.1 基本常用正则表达式汇总

表达式解释
^用于模式最左侧,如 “^yu” 即匹配以yu开头的单词
$用于模式最右侧,如 “yu$” 即匹配以yu结尾的单词
^$组合符,表示空行
.匹配任意一个且只有一个字符,不能匹配空行
|使用egrep命令
*重匹配前一个字符连续出现0次或1次以上
.*匹配任意字符
^.*组合符,匹配任意多个字符开头的内容
.*$组合符,匹配任意多个字符结尾的内容
[abc]匹配 [] 内集合中的任意一个字符,a或b或c,也可以写成 [ac]
[^abc]匹配除了 ^后面的任意一个字符,a或b或c,[]内 ^ 表示取反操作

4.2 案例演示

  • 准备文件names.txt
vim names.txt

#填入一下内容
I am god

I like watching the World Cup

我是神,你不能。。。。。

hello World

Hi,sarry

智商250

#这是注释行

  • 注:文本直接复制进去会有换行符号,需要在编辑器里面删除空行重新换行

4.2.1 过滤非空的行

grep '^$' names.txt -v

4.2.2 找出names.txt中的未注释行,并过滤空行

grep "^#" names.txt -v | grep "^$" -v

4.2.3 输出以h开头的行,不区分大小写

grep -i  "^h" names.txt 

4.2.4 输出以"。"结尾的行

grep -n "。$" names.txt 

4.2.5 匹配文本中至少包含一个 am 的

grep -i ".am" names.txt

4.2.6 匹配文本中包含数字的行

  • 考察对 [abc] 类似的用法
  • [a-z] 匹配所有小写单个字母
  • [A-Z] 匹配所有大写单个字母
  • [a-zA-Z] 匹配所有单个大小写字母
  • [0-9] 匹配所有单个数字
  • [0-9a-zA-Z] 匹配所有数字和字母
grep "[0-9]" names.txt

4.3 扩展正则表达式使用

表达式解释说明
+表示匹配前一个字符一次或多次
?表示匹配前一个字符0次或1次
()将一个或多个字符捆绑在一起,当作整体进行处理
{n,m}匹配目标字符,最少n次,最多m次
{n,m}匹配目标字符,最少n次,上不封顶
>匹配位于 目标字符开头的字符串,即截止到 < 前面的字符为止,精确匹配
<匹配位于 目标字符结尾的字符串,即截止到 > 前面的字符为止,精确匹配

4.4 案例演示

4.4.1 筛选前一个字符包含e的的文本行

grep -E 'e+' names.txt

  • 20
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值