文本三剑客grep与正则表达式、元字符

正则表达式

正则表达式又称为正规表达式、常规表达式、在代码中常简写为regex、regex或RE。正则表达式是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串,简单来说,是一种匹配字符串的方法,通过一些特殊符号,实现快速查找、删除、替换某个特定的字符串。

        这里不得不提的是shell三剑客:grep,sed,awk。

一、grep和元字符

grep [选项]  [查找条件(正则)]  [目标文件]
 
-E:开启扩展的正则表达式
-c:计算找到'搜寻字符串'的次数
-i:忽略大小写的不同,所以大小写视为相同
-o:只找到这个关键字就可以
-v:反向选择,即输出没有匹配到的那些字符
--color=auto:可以将找到的关键词部分加上颜色的显示!
-n:顺便输出行号
-w:表示精确匹配一个字符

-q :静默

-R :  可以查找目录下面的文件

-B2 : 前两行

-A2 : 后两行

-C2 : 上下两行

egrep [选项]  [查找条件]  [目标文件]

-l   : 只要文件名

-n  :  带行号

元字符定义

元字符是在正则表达式中具有特殊含义的字符,用于定义搜索模式中字符的出现方式和位置

元字符使得正则表达式能够以更灵活和动态的方式来匹配文本。在实际应用中,我们经常需要结合记忆、示例学习和案例练习来熟练掌握它们的使用。通过不断实践,我们可以构建出复杂的正则表达式,以高效地处理文本匹配和数据提取任务。

分类:

  • 数量元字符* 表示前一个字符可以出现0次或多次;+ 表示前一个字符至少出现1次;? 表示前一个字符出现0次或1次;花括号 {n} 用来指定前一个字符或组合的确切重复次数。
  • 边界元字符^ 表示行的开头;$ 表示行的结尾;这些元字符帮助我们定位特定的字符串位置。
  • 字符类元字符. 用来匹配任意单个字符(除了换行符);方括号 [] 用来定义一个字符集合,匹配其中任一字符;而 [^] 则是排除特定字符的集合。
  • 选择元字符:竖线 | 用作“或”操作,允许选择两个正则表达式中的一个进行匹配。
  • 分组元字符:圆括号 () 用于将多个字符作为一个整体进行处理,它们通常与数量元字符一起使用来指定组的出现次数。

1.基本正则表达式元字符串:

  • ^ :行首定义符
  • grep ^root /etc/passwd
  • $ :行尾定义符
  • grep root$ /etc/passwd
  • .  :匹配任意单个字符  
  • grep r.t /etc/passwd
  • *  :匹配前导符0次到多次
  • grep " ro* " /etc/passwd (配合左侧的字符) 
  • .* : 匹配任意多个字符
  • grep " .* " /etc/passwd
  • [ ] : 匹配指定范围内的一个字符
  • grep " [rR]oot " /etc/passwd
  • [-] : 匹配指定范围内的一个字符,连续的范围
  • grep "[a-z]oot" /etc/passwd
  • [^] : 匹配不在指定组内的字符
  • grep "[^a1?/]" /etc/passwd (排除中括号内的所有字符,只取除这些字符外的所有字符的结果)
  • \ : 用来转义元字符(' '   " "  \),脱意符。(\应该在需要被转义字符的左侧
  • grep "r.\ot" /etc/passwd
  • \< : 词首定位符
  • grep " \<root " etc/passwd (只查询以root开头的)
  • \> : 词尾定位符
  • 同上,意思相反的啦
  • ( ) : \(..\) 匹配稍后使用的字符的标签
  • (:3,9 s/\(.*\)/#\1/ 加注释)
  • x\{m\} : 字符x重复出现m次
  • grep r" \{o\} " etc/passwd
  • x\{m,\}
  • grep r" o\{2}\ "t etc/passwd
  • x\{m,n\}
  • grep r" o\{3,4\} "t etc/passwd

2.扩展正则表达式元字符串(egrep扩展支持正则)

  • + : 匹配1~n个前导字符 
  • egrep ro+ot /etc/passwd
  • ? : 匹配0~1个前导字符
  • egrep "ro*ot" /etc/passwd
  • a|b : 匹配 a 或 b 
  • egrep " o|o " /etc/passswd 
  • (): 组字符
  • egrep "r(o|ot)" /etc/passwd
  • 28
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值