linux正则表达式

1. 基础正则表达式

RE字符意义与范例
^word

意义:待查找的字符串(word)在行首

—————————————————

范例:查找行首为#的哪一行,并列出行号

grep '^#' my_re.txt

word$

意义:待查找的字符串(word)在行尾

—————————————————

范例:查找行首为!的哪一行,并列出行号

grep '!$' my_re.txt

^$意义:空白行
.

意义:代表一定有一个任意字符的字符

—————————————————

范例:查找的字符串可以是(bvb)(bab)(bbb)(bb),但不能仅有(bb),即b与b之间一定仅有一个字符,而空格符也是字符

grep 'b.b' my_re.txt

\s意义:匹配空格
\

意义:转义字符,将特殊符号的特殊意义去除

————————————————————

范例:查找含有单引号'的那一行

grep '\'' my_re.txt

*

意义:重复0个到无穷多个前一个字符

—————————————————

范例:找出含有(bs)(bss)(bsss)等的字符串,注意,因为*可以是0个,所以bs也是符合带查找的字符串。另外,因为*为重复"前一个RE字符串"的符号,因此,在*之前必须要紧接着一个RE字符,例如任意字符为".*"

grep 'bss*' my_re.txt

[list]

意义:从字符集合的RE字符里面找出想要选取的字符

———————————————————————

范例:查找含有(gl)或(gd)的那一行,需要特别留意的是,在[]当中代表一个带查找的字符,例如"a[afl]y"代表查找的字符串可以是aay,afy,aly,即[afl]代表a或f或l的意思

grep 'g[ld]' my_re.txt

[n1-n2]

意义:从字符集合的RE字符里面找出想要选取的字符范围

—————————————————————————

范例:查找含有任意数字的那一行。需要特别注意,在字符集合[]中减号-是有特殊意义的,它代表两个字符之间的所有连续字符。但这个连续与否与ASII编码有关,因此,你的编码需要设置证券(在bash中,需要确定LANG与LANGUAGE的变量是否正确)例如所有大写字符为[A-Z]

grep '[0-9]' my_re.txt

[^list]

意义:从字符集合的RE字符里面找出不要的字符串或范围

—————————————————————————

范例:查找的字符串可以是(oog)(ood)但不能是(oot),那个^在[]内时代表的意义是“反向选择”的意思。例如,我不要大写字符,则为[^A-Z]。但是,需要特别注意的是,如果以grep -n '[^A-Z]' my_re.txt来查找,却发现该文件内所有行都被列出,为什么?因为这个[^A-Z]是“非大写字符”的意思,因为每一行均有非大写字符。

grep 'oo[^t]' my_re.txt

\{n,m\}

意义:连续n到m个的前一个RE字符,若为\{n\}则是连续n个前一个RE字符,若为\{n,\}则是连续n个以上的前一个RE字符

—————————————————————————————————————————

范例:在g与g之间有2到3个o存在的字符,即(goog)(gooog)

grep 'go\{2,3\}g' my_re.txt

2. 扩展正则表达式

grep默认只支持基础正则表达式,下面扩展正则表达式需要使用grep -E或者egrep,建议使用egrep,直接区分命令比较好记忆,egrep和grep -E是类似命令和别名的关系。

RE字符意义与范例
+

意义:重复一个或一个以上前一个RE字符

—————————————————

范例:查找(god)(good)(goood)等的字符串,o+代表一个以上的o

egrep -n 'go+d' my_re.txt

?

意义:重复0个或一个前一个RE字符

—————————————————

范例:查找(gd)(god)这两个字符串,o?代表0个o或者1个o

egrep -n 'go?d' my_re.txt

|

意义:用或(or)的方式找出数个字符串

—————————————————

范例:查找(gd)(good)这两个字符串,如果还想找出dog字符串

egrep -n 'gd|good' my_re.txt

egrep -n 'gd|good|dog' my_re.txt

( )

意义:找出“组”字符串

——————————

范例:查找(glad)或(good)这两个字符串,因为g与d是重复的,所以可以将la和oo列与()中,并以|来分隔就好了

egrep -n 'g(la|oo)d' my_re.txt

( )+

意义:多个重复组判别

——————————

范例:查找"AxyzxyzxyzxyzC"的字符串,意思是需要查找以A开头以C结尾,中间有一个以上xyz字符串

egrep -n 'A(xyz)+C' my_re.txt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DaxiaLeeSuper

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值