grep和正则表达式常规基本语法

本文详细介绍了grep这款文本过滤工具的基本功能和使用方法,包括基本和扩展正则表达式的元字符、匹配模式及其应用实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

grep是一款文本过滤工具。

作用:

          文本搜索的工具,根本用户指定 “模式“对目标文本逐行匹配检查:打印匹配到 行
           打印匹配到的行。

模式:

       是由正则表达式字符及文本字符所编写的过滤条件。

正则表达式分为
基本正则表达式 : BRE
扩展正则表达式 : REE

grep工具支持基本正则表达式,egrep支持扩展的正则表达式,并且grepd -E选项其实就是egerp

正则表达式 REFEXP:由一类特殊字符及文编编写的模式,其中有些字符不表示字符字面的意义,而表示控制或通配的功能

grep基本语法
grep [OPTIONS] PATTER [FILE…]
- -color 高亮色彩显示匹配到的字符串
-v:显示不能被 pattern 匹配到的行
-i:忽略字符串大小写
-o:仅显示匹配到的字符串
-q:静默模式,不输出任何信息

  • 基本正则表达式元字符
    • 字符匹配
      • .:匹配任意单个字符
      • [ ]:匹配指定范围内的任意单个字符
      • [^]:匹配指定范围外的任意单个字符
    • 次数匹配
      用于在要指定次数的字符后面,用于指定前面的字符要出现的次数
      • .*:任意长的任意字符
      • \?:匹配其前面的字符0或1次
      • **\+:匹配前面字符至少1次**0-次
      • \{m\}:匹配前面的字符m次
      • \{m,n\}:匹配前面字符至少m次,至多n次
      • \{0,n\}:匹配前面的字符至多n次
      • \{m,\}:匹配前面的字符至少m次
    • 位置锚定
      对特定位置进行定位
      • ^*:行首锚定:用于模式的最左侧
      • $*:行尾锚定:用于模式的最右侧
      • \<或\b*:词首锚定:用于单词的最左侧
      • \>或\b*:词尾锚定:用于单词的最右侧

分组:是指将一个或多个字符捆绑在一起,当做一个整体进行处理,其符号为:\(\)

     如:\(qw\)*ab表示qw这个整体可以出现任意次

注意:
1,分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为:\1, \2, \3,……
\1:从左侧起,第一个左括号以及与之匹配的右括号之间的模式所匹配到的字符:如:\(xy\+\(ab\)\)中\1表示:xy\+(ab\)* ::\2表示:ab
2,后向引用:引用前面的分组括号中的模式所匹配的字符,而非模式本事

例题:
1,显示/proc/meminif 文件中以大小或小写或S开头的行
这里写图片描述

  • 扩展正则表达式元字符
    • 字符匹配
      • [ ]:匹配指定范围外的任意单个字符
      • [^]:匹配指定范围外的任意单个字符
        扩展表达式基本和基本表达式相同
    • 次数匹配
      • .*:任意长的任意字符
      • ?:匹配其前面的字符0或1次
      • +:匹配前面字符至少1次
      • {m}:匹配前面的字符m次
      • {m,n}:匹配前面字符至少m次,至多n次
      • {0,n}:匹配前面的字符至多n次
      • {m,}:匹配前面的字符至少m次
    • 位置锚定
    • 对特定位置进行定位
      • ^*:行首锚定:用于模式的最左侧
      • $*:行尾锚定:用于模式的最右侧
      • \<或\b*:词首锚定:用于单词的最左侧
      • \>或\b*:词尾锚定:用于单词的最右侧

分组:扩展正则表达式的位置锚定和基本正则表达式相同,这里不再重复说明。

      ();用括号括起来表示引用的内容,不需要专义。
     后向引用:\1,\2,\3

或者:

          a|b:或者b
          con(C|c)at:conCat或者concat

扩展正则表达式的使用语法:

       grep -E 'PATTERN' FILE...
       egrep 'PAATTERN' FILE...

例题:使用扩展的正则表达式
找出:/etc/rc.d/init.d/functions 文件中某单词后跟一组小括号”()“行:
c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值