erlang学习:Linux命令学习7

grep进阶,正则表达式初步学习

正则表达式简介

正则表达式是由一些具有特殊含义的字符组成的字符串,多用于查找、替换符合规则的字符串。在表单验证、Url映射等处都会经常用到,同样在linux中也能够用到。

元字符

元字符:即为有特定含义的字符,常见的元字符如下

常用的元字符

^ :匹配输入字符串的开始位置。除非在方括号表达式中使用,表示不包含该字符集合。要匹配"^"字符本身,需要转移"^"

:匹配输入字符串的结尾位置。如果设置了RegExp对象的Multiline属性,则""也匹配'\n'或'r'

. :"."代表除"\n\s"之外的任何单个字符

\ :反斜杠,又叫转义字符,去除其后紧跟的元字符或通配符的 特殊意义

*:匹配前面的子表达式零次或多次。要匹配"*"字符,要进行\转移

:字符集合,匹配所包含的任意的一个字符

\^: 复制字符集。匹配未包含在 内的任意一个字符

n1-n2 :字符范围。匹配指定范围内的任意一个字符。例如a-z可以匹配到a到z范围内的任意一个小写字母字符

{n} :n是一个非负整数,匹配确定的n次,例如"o{2}"不能匹配"Bob"中的"o",但是能匹配到"food"中的"oo"

{n,} :n是一个非负整数,至少(最少)匹配n次。例如,"o{2,}"不能匹配"Bob"中的"o",但是能匹配"fooooood"中的所有o。"o{1.}"等于"o+"

{n,m}: n和m均为非负整数,其中n<=m,最少匹配n次,最多匹配m次

测试文本文件如下

erlang 复制代码
I am teacher
I am student
I ma student
I like Linux
I like erlang
I like Java
Hello word!

12345
84327018
sdsaf
dsgfjokjdfklg
jjjj.
kkkkkkkk.
wood.
woooood.
test
text

1_a
11111.
aaa_
131287974823

对字符串匹配

erlang 复制代码
grep "like" test.txt -i -n  %%搜寻含有like的
grep -vn "like" test.txt -i -n  %%搜寻不含有like的

使用\[\]来查找集合字符

要查找testt和text时

erlang 复制代码
grep "te[sx]t" test.txt -i -n


要查找包含重复或单个字符o时

erlang 复制代码
grep 'oo' test.txt -i -n
grep 'o' test.txt -i -n


匹配数字

erlang 复制代码
grep '[0-9]' test.txt
grep '[0-5]' test.txt

查找行首"^"与行尾字符"$"

erlang 复制代码
grep '^[a-z]' test.txt -n  %%匹配开头的字符串a-z
grep '^[z-A]' test.txt -n
grep '^[A-z]' test.txt -n
grep '^[A-Z]' test.txt -n  %%匹配开头的字符串A-Z

\[\]中貌似只能匹配类似0-9a-zA-Z类似这样的,不能跨越匹配会报错

查找以.结尾的行

erlang 复制代码
grep '$' test.txt -n
grep '\.$' test.txt -n

这里不知道什么原因不能够查询结尾的行,我猜测是因为我是从文本编辑器里面输入的,换行符估计产生了问题,因此要匹配以什么结尾的匹配不上。


查找任意一个字符"."与重复字段"*"

erlang 复制代码
grep -n'w..d' test.txt  %%查询wd中间有两个字母的字符串
grep -n'oo*' test.txt   %%匹配一个o

在上述结果中,"wood"字符串"w...d"匹配规则。若想要查询 oo、ooo、ooooo 等资料, 则需要使用星号()元字符。但需要注意的是,""代表的是重复零个或多个前面的单字符。 "o*"表示拥有零个(即为空字符)或大于等于一个"o"的字符,因为允许空字符,所以执行"grep -n'o*'test.txt"命令会将文本中所有的内容都输出打印。如果是"oo*",则第一个 o 必须存在, 第二个 o 则是零个或多个 o,所以凡是包含 o、oo、ooo、ooo,等的资料都符合标准。同理,若查询包含至少两个 o 以上的字符串,则执行"grep -n 'ooo*' test.txt"命令即可


查找连续字符范围{}

上述只能匹配 1-无限个o,无法匹配1-3个o的情况,如果需要相应的匹配需要使用{}

erlang 复制代码
grep -n 'o\{2\}' test.txt %%查找两个o的字符串
grep -n 'wo\{2\}' test.txt %%查找w之后两个o的字符串
grep -n 'wo\{2,5\}d' test.txt %%查找w之后中间2-5个o,结尾是d的字符串
相关推荐
胡图图不糊涂^_^41 分钟前
测试BUG篇
学习·bug·测试
一起逃去看海吧1 小时前
dify-03
java·linux·开发语言
fengyehongWorld1 小时前
Linux 根据端口进行的相关查询
linux
lihao lihao1 小时前
linux匿名管道
linux·运维·服务器
うちは止水1 小时前
weston出图调试
linux·wayland·weston
STDD1 小时前
Farming Simulator 25(模拟农场 25) Linux 专服搭建完全指南
linux·运维·javascript
好好风格2 小时前
宝塔面板 HTTPS 端口证书不生效排查记录
linux·运维·nginx
用户2367829801682 小时前
Linux pgrep 命令详解:按名称查找进程 PID 的高效方法
linux
zzipeng2 小时前
Linux LCD驱动
linux·运维·服务器