shell 三剑客---正则表达式

正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。它在文本处理中非常有用,尤其是在搜索、编辑或操作文本和数据时。
grep通过正则表达式来定义搜索模式,从而实现对文本的精确搜索。
awk在处理文本时,可以使用正则表达式来定义模式,进而对符合这些模式的字段或记录进行特定的操作。
sed在处理文本时,同样使用正则表达式来定义查找模式,然后基于这些模式进行替换、删除等操作。

grep主要用于搜索文本
sed主要用于文本的过滤和转换
awk提供更高级的文本分析和处理能力。

正则表达式

正则表达式–元字符

符号含义
^匹配开头,如 ^123 以123开头的行,有则匹配出来
$匹配结尾,如123$ 以123结尾的行,有则匹配出来
^$匹配空行,也就是那一行啥都没有(空格也不行)则匹配出来
.任意一个字符(空行除外)
*前一个字符连续出现0次或者多次
.*任意字符出现0次(多次),也就是代表所有
[]匹配指定范围内的一个字符,一次匹配一个字符,可多样。[abcd],匹配a或者b或者c或者d,
[^]取反,匹配不在指定组内的字符,如[^abc],排查abc
\反斜杠,适用于转义匹配,\放在需要转意字符的左侧,如匹配以 “.” 结尾 grep ‘\.$’ filename
\<词首定位符,如 grep “<love” 1.txt 查找1.txt文件中以love开头的单词
\>词尾定位符 grep “love>” 1.txt 查找1.txt文件中以love结尾的单词
o\{m\}表示字符o重复出现m次
o\{m,\}表示字符o重复出现m次以上
o\{m,n\}表示字符o重复出现m到n次

扩展正则表达式元字符

grep 不识别扩展元字符

egrep
egrep 是grep的升级
或者
grep -E

  •  +   o+  表示 o 出现至少一次,1次到多次
    
  • ? lo?ve :?前面的o 出现0次或者1次。有还是没有,都行!
    
  • a|b     包含a或者b的
    
egrep "rs|able" 1.txt
rs
loveable
lovers
rsble
rable
  • ()
    
egrep "r(s|a)ble" 1.txt
rsble
rable

示例:

代码示意
grep love 1.txt找love
/^love/以love开头
/love$/以love结尾
/l.ve/l开始,一个任意字符,ve结尾
/lo*ve/l开始,零个或多个o,ve结尾
/[Ll]ove/大L 或者小L 开头的 ove
/love[a-z]/love最后一个小写字母
/love[^a-zA-Z0-9 ] /love最后一个(不是字母或者数字),而是符号

示例2

代码示意
/.*/所有行 [root@localhost ~]# egrep “.*” 1.txt
/^$/空行
/^ [A-Z]…$/开头一个大写,最后2个任意字符
/^ [A-Z][a-z ]*3[0-5]/一个大写开头,0到多个小写或空格,3,最后是0-5的一个数字
/[a-z]*\./0到多个小写字母,最后一个点
/^ *[A-Z][a-z][a-z]$/0到多个空格开头,一个大写,一个小写,再一个小写结尾
/^ [A-Za-z]*[ ^,][A-Za-z]*$/0到多个字母开头,非逗号,0到多个字母结尾
/\<fourth\>/找个单词,寻找叫fourth的单词
/\<f.*th\>/找单词。以f开头,中间任意字符,th结尾
/5{2}2{3}\./5两次个2三个和一个点。55222.
/^ [ \t]*$/0到多个 ,空格或tab的行
/^#/井号开头的行
/^ [ \t]*#/有0到多个,空格或者tab开头的行,即注释行
:1,$ s/([Oo]ccur\)ence/\1rence/多个r。就是把occurence 换成occurrence。1,$表示从第一行到最后一行
:1,$ s/\(square\) and \(fair\)/\2 and \1/换个位置。square and fair 换成了 fair and square
  • 14
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值