linux当中的正则/扩展表达式(grep篇)

正则表达式在linux当中我们去使用shell脚本的时候经常会用到正则表达式,所以整理一些我们会用到的表达式,以便提升shell脚本能力

一、正则表达式(1)
通过grep命令实践正则表达式
比如我们去过滤带有bbb字段的行,直接可以通过grep "xx" file去获取到

[[email protected] ~]# cat test1
aaa bbb ooo
cccc dddd eeee
fffff ggggg hhhhh bbbbb
kkkkk pppppp ssssss xxxxxx   mmmmmmmm
[[email protected] ~]# grep "bbb" test1
aaa bbb ooo
fffff ggggg hhhhh bbbbb

比如去过滤出以aaa开头的行,我们就需要使用^去匹配了,^表示固定行首
引号加不加都可以

[[email protected] ~]# grep "^aaa" test1
aaa bbb ooo
[[email protected] ~]# grep ‘^aaa‘ test1
aaa bbb ooo
[[email protected] ~]# grep ^aaa test1
aaa bbb ooo

^是匹配行首,而$是匹配行尾,可以试一下,引号也可以不加

[[email protected] ~]# grep mm$ test1
kkkkk pppppp ssssss xxxxxx   mmmmmmmm
[[email protected] ~]# grep ‘mm$‘ test1
kkkkk pppppp ssssss xxxxxx   mmmmmmmm
[[email protected] ~]# grep "mm$" test1
kkkkk pppppp ssssss xxxxxx   mmmmmmmm

比如匹配一个单词,直接可以使用^xx$也就是匹配行首与行尾,grep -n 顺便输出行号,--color颜色

[[email protected] ~]# grep ^today$ test1
today

[[email protected] ~]# grep -n --color ^today$ test1
1:today
[[email protected] ~]# grep -n  ^today$ test1
1:today

那么^$是空行的意思,匹配空行,在第四行输出一个空格,使用^$也能匹配到

[[email protected] ~]# grep ^$ test1

[[email protected] ~]# grep -n ^$ test1
4:

在grep中去匹配一个词的词首或者词尾

[[email protected] ~]# grep "\<Beijing" test1
Beijing
[[email protected] ~]# grep "beijinG\>" test1
beijinG
[[email protected] ~]# grep "\<B" test1
Beijing
[[email protected] ~]# grep "G\>" test1
beijinG

也可以固定词首与词尾

[[email protected] ~]# grep -n --color "\<beijin\>" test1
6:Beijing is beijin ya

除了\<固定词首还可以使用\b也可以规定词首
除了\>固定词尾还可以使用\b也可以固定词尾

[[email protected] ~]# grep -n --color "\bccc" test1
5:cccc dddd eeee

[[email protected] ~]# grep -n --color "eee\b" test1
5:cccc dddd eeee

[[email protected] ~]# grep -n --color "\beeee\b" test1
5:cccc dddd eeee

这个b还有一个兄弟B,这个属于是匹配“非单词边界的"
可以看出匹配第一个bb的时候是除了bb开头之外的词首都匹配到了
下面的匹配除了匹配到bbb开头的词首其他的都去匹配

[[email protected] ~]# grep -n --color "\Bbb" test1
2:aaa bbb ooo
7:fffff ggggg hhhhh bbbbb
[[email protected] ~]# grep -n --color "\Bbbb" test1
7:fffff ggggg hhhhh bbbbb

小结:
^:表示固定行首,词字符后面任意内容必须出现在行首,才能匹配
$:表示固定行尾,词字符前面的任意内容必须出现在行尾,才能匹配
^$:表示匹配空行,这里所描述的空行表示‘回车’,而空格或tab,等都不能算作此处所描述的空行
^abc$:表示abc独占一行时,会被匹配到
\<或者\b:匹配单词边界,表示固定词首,其后面的字符必须作为单词首部出现
\>或者\b:匹配单词边界,表示固定词尾,其前面的字符必须作为单词尾部出现
\B:匹配非单词边界,与\b相反

二、正则表达式(2)
找出文本中有哪几行包含两个连续的字母image
比如找出yaml文件中有哪些以image开头的单词

[[email protected] files]# grep -n "image" coredns.yaml
111:        image: zhaocheng172/coredns:1.2.2
112:        imagePullPolicy: IfNotPresent

如果一个文本中有很多的单词,但是只想去匹配单词中相同的字段的含有两个连续的

[[email protected] ~]# grep -n "b\{2\}" test3
4:bb
6:bbb

[[email protected] ~]# grep -n "a\{2\}"  test3
1:aa
3:aaa a a aa
8:aaiip
9:aallo aahuy


匹配次数的正则符号 , 这个我们经常会用到,匹配任意字符的时候
表示匹配任意长度的任意字符
但是在正则表达式中,表示之前的字符连续出现任意次数(包括0次)
比如匹配a
p也就是a可以出现任意次,但是后面必须有p跟着

[[email protected] ~]# grep -n "a*p" test3
7:appaly aoopa
8:aaiip

*匹配o也就是o之后的任意字符**

[[email protected] ~]# grep -n --color "o*" test2
1:aaa#bbb#ooo
2:cccc#dddd#eeee
3:fffff#ggggg#hhhhh
4:kkkkk#pppppp#ssssss

在通配符中表示任意长度字符,在正则表达式中而用.来匹配

[[email protected] ~]# grep -n --color "o.*" test1
1:today
2:aaa bbb ooo

正则表达式中的.代表后任意一个单个字符,..就是任意两个字符都会匹配到

[[email protected] ~]# grep -n "y." test
6:sync:x:5:0:sync:/sbin:/bin/sync
[[email protected] ~]# grep -n "y.." test
6:sync:x:5:0:sync:/sbin:/bin/sync
[[email protected] ~]# grep -n "y..." test
6:sync:x:5:0:sync:/sbin:/bin/sync

三、正则表达式(3)常用符号
[[:alpha:]]是匹配所有任意字母带字母的

[[email protected] ~]# grep "[[:alpha:]]" test4
a
a9o
afghj9gh
abcd
aBDc
abdD
a124
a1a4
a%

前面加个a也就是一个带字母的,默认

[[email protected] ~]# grep "a[[:alpha:]]" test4
afghj9gh
abcd
aBDc
abdD

也就是匹配a后面三个带字母的

[[email protected] ~]# grep "a[[:alpha:]]\{3\}" test4
afghj9gh
abcd
aBDc
abdD

匹配a后面2个带字母的

[[email protected] ~]# grep "a[[:alpha:]]\{2\}" test4
afghj9gh
abcd
aBDc
abdD

比如三个字符都必须是小写的话
可以使用[[:lower:]] 表示任意小写字母

[[email protected] ~]# grep "a[[:lower:]]" test4
afghj9gh
abcd
abdD
[[email protected] ~]# grep "a[[:lower:]]\{2\}" test4
afghj9gh
abcd
abdD


也可以使用表示任意大写字母

[[:upper:]]

[[email protected] ~]# grep "a[[:upper:]]\{1\}" test4
aBDc
[[email protected] ~]# grep "a[[:upper:]]\{2\}" test4
aBDc

常用符号
[[:alpha:]] 表示任意大小写字母
[[:lower:]] 表示任意小写字母
[[:upper:]] 表示任意大写字母
[[:digit:]] 表示0-9之间的任意单个数字(包括0和9)
[[:alnum:]] 表示任意数字或字母
[[:space:]] 表示任意空白字符,包括空格,tab健
[[:punct:]] 表示任意标点符号

除了[[:lower:]]可以代表小写字母,另外一个”[a-z]"也可以表示任意一个小写字母,[[:lower:]]和[a-z]是一样的

[[email protected] ~]# grep "[a-z]" test4
a
a9o
afghj9gh
abcd
aBDc
abdD
a124
a1a4
a%
[[email protected] ~]# grep "[[:lower:]]" test4
a
a9o
afghj9gh
abcd
aBDc
abdD
a124
a1a4
a%

同理大写[A-Z]和[[:upper:]]也是一样的

[[email protected] ~]# grep "[A-Z]" test4
aBDc
abdD
[[email protected] ~]# grep "[[:upper:]]" test4
aBDc
abdD


使用两种方法来过滤出a字母之后2个的字符
[[:lower:]]小写
[[:upper:]] 大写

[[email protected] ~]# grep "a[a-z]\{2\}" test4
afghj9gh
abcd
apooo
aiuhh
abdD
[[email protected] ~]# grep "a[[:lower:]]\{2\}" test4
afghj9gh
abcd
apooo
aiuhh
abdD
[[email protected] ~]# grep "a[A-Z]\{2\}" test4
aBDc
[[email protected] ~]# grep "a[[:upper:]]\{2\}" test4
aBDc

另外还有一个任意字符也就是[[:alpha:]]它和[a-zA-Z]意思一样

[[email protected] ~]# grep "[[:alpha:]]" test4
a
a9o
afghj9gh
abcd
apooo
aiuhh
aBDc
abdD
a124
a1a4
a%
[[email protected] ~]# grep "[a-zA-Z]" test4
a
a9o
afghj9gh
abcd
apooo
aiuhh
aBDc
abdD
a124
a1a4
a%


同理[0-9]和[[:digit:]]等效,都表示0-9之间任意单个数字

[[email protected] ~]# grep "[[:digit:]]" test4
a9o
afghj9gh
a124
a1a4
[[email protected] ~]# grep "[0-9]" test4
a9o
afghj9gh
a124
a1a4


这个中间的[a-z]也就是所有的小写字母,也可以匹配相关字符

[[email protected] ~]# grep "b[ad]" test5
ba
bd

也可以匹配特殊字符,[ ]表示匹配指定范围内的任意单个字符

[[email protected] ~]# grep "b[[email protected]*&]" test5
bc
bP
b&
b*
[email protected]

过滤除了这些符号之外的字符

[[email protected] ~]# grep "b[^[email protected]*&]" test5
ba
bd
bf
bg

使用[^a-z]排除这个以外的字符

[[email protected] ~]# grep "b[^A-Z]" test5
ba
bc
bd
bf
bg
b&
b*
[email protected]
[[email protected] ~]# grep "b[^a-z]" test5
bP
b&
b*
[email protected]

同理
[^a-z]表示非小写字母的单个字符可以被匹配到
[^A-Z]表示非大写字母的单个字符可以被匹配到
[^a-zA-Z]表示非字母的单个字符可以被匹配到,比如数字或符号
[^a-zA-Z0-9]表示非字母、非数字的单个字符可以被匹配到,比如符号

前面试到[a-z]和[[:lower:]]等效那么在^中也是等效的

[[email protected] ~]# grep "b[^[:lower:]]" test5
bP
b&
b*
[email protected]

也就是[^0-9]和[^[:digit:]]等效
[^a-z]和[^[:lower:]等效
[^A-Z]和[^[:upper:]]等效
[^a-zA-Z]和[^[:alpha:]等效
[^a-zA-Z0-9]和[^[:alnum:]等效

除了[0-9], [[:digit:]]可以表示数字,而且还可以使用\d来表示数字

[[email protected] ~]# grep -P "b\d" test5
b3
b4
b5


显示任意单个非数字字符

[[email protected] ~]# grep -P "b\D" test5
ba
bc
bd
bf
bg
bP
b&
b*
[email protected]

\d表示任意单个0-9的数字
\D表示任意单个非数字字符
\t表示匹配单个横向制表符(相当于一个tab健)
\s表示匹配单个空白字符,包括空格,tab制表符等
\S表示匹配单个非空白字符

四、正则表达式 转义符

常用符号"\",转义符
之前我们用到了.正则代表匹配后面任意字符,但是如果这个文本中就有这个点,直接匹配的话,也会匹配到其他的,这里我们就需要使用转义符\来匹配

[[email protected] ~]# grep "a.." test4
a9o
afghj9gh
abcd
apooo
aiuhh
aBDc
abdD
a124
a1a4
a..

[[email protected] ~]# grep "a\.\." test4
a..

如果想匹配反斜杠本身的话
可以使用‘‘单引号来进行匹配,‘\‘匹配一个

[[email protected] ~]# grep ‘a\\‘ test4
a\\[[email protected] ~]# grep ‘a\\\\‘ test4
a\\[[email protected] ~]# grep ‘a\\\\\\‘ test4
a\\\

五、正则表达式小结

#################常用符号#################
. 表示任意单个字符。

  • 表示前面的字符连续出现任意次,包括0次。
    . 表示任意长度的任意字符,与通配符中的的意思相同。
    \ 表示转义符,当与正则表达式中的符号结合时表示符号本身。
    [ ]表示匹配指定范围内的任意单个字符。
    [^ ]表示匹配指定范围外的任意单个字符。

#################单个字符匹配相关#################
[[:alpha:]] 表示任意大小写字母。
[[:lower:]] 表示任意小写字母。
[[:upper:]] 表示任意大写字母。
[[:digit:]] 表示0到9之间的任意单个数字(包括0和9)。
[[:alnum:]] 表示任意数字或字母。
[[:space:]] 表示任意空白字符,包括"空格"、"tab键"等。
[[:punct:]] 表示任意标点符号。
[^[:alpha:]] 表示单个非字母字符。
[^[:lower:]] 表示单个非小写字母字符。
[^[:upper:]] 表示单个非大写字母字符。
[^[:digit:]] 表示单个非数字字符。
[^[:alnum:]] 表示单个非数字非字母字符。
[^[:space:]] 表示单个非空白字符。
[^[:punct:]] 表示单个非标点符号字符。
[0-9]与[[:digit:]]等效。
[a-z]与[[:lower:]]等效。
[A-Z]与[[:upper:]]等效。
[a-zA-Z]与[[:alpha:]]等效。
[a-zA-Z0-9]与[[:alnum:]]等效。
[^0-9]与[^[:digit:]]等效。
[^a-z]与[^[:lower:]]等效。
[^A-Z]与[^[:upper:]]等效
[^a-zA-Z]与[^[:alpha:]]等效
[^a-zA-Z0-9]与[^[:alnum:]]等效
#简短格式并非所有正则表达式解析器都可以识别。
\d 表示任意单个0到9的数字。
\D 表示任意单个非数字字符。
\t 表示匹配单个横向制表符(相当于一个tab键)。
\s表示匹配单个空白字符,包括"空格","tab制表符"等。
\S表示匹配单个非空白字符。

#################次数匹配相关#################
\? 表示匹配其前面的字符0或1次
+ 表示匹配其前面的字符至少1次,或者连续多次,连续次数上不封顶。
{n} 表示前面的字符连续出现n次,将会被匹配到。
{x,y} 表示之前的字符至少连续出现x次,最多连续出现y次,都能被匹配到,换句话说,只要之前的字符连续出现的次数在x与y之间,即可被匹配到。
{,n} 表示之前的字符连续出现至多n次,最少0次,都会陪匹配到。
{n,}表示之前的字符连续出现至少n次,才会被匹配到。

#################位置边界匹配相关#################
^:表示锚定行首,此字符后面的任意内容必须出现在行首,才能匹配。
$:表示锚定行尾,此字符前面的任意内容必须出现在行尾,才能匹配。
^$:表示匹配空行,这里所描述的空行表示"回车",而"空格"或"tab"等都不能算作此处所描述的空行。
^abc$:表示abc独占一行时,会被匹配到。
\<或者\b :匹配单词边界,表示锚定词首,其后面的字符必须作为单词首部出现。
\>或者\b :匹配单词边界,表示锚定词尾,其前面的字符必须作为单词尾部出现。
\B:匹配非单词边界,与\b正好相反。

#################分组与后向引用#################
( ) 表示分组,我们可以将其中的内容当做一个整体,分组可以嵌套。
(ab) 表示将ab当做一个整体去处理。
\1 表示引用整个表达式中第1个分组中的正则匹配到的结果。
\2 表示引用整个表达式中第2个分组中的正则匹配到的结果。

[[email protected]heng ~]# cat shengri.txt
小卡  19901119
小红  19920105
小里  19930211
小会  19940325
小黑  19950418
匹配1993开头的
[[email protected] ~]# grep "\b1993[0-9]\{4\}\b" shengri.txt
小里  19930211

这里意思\<1992,\b1992都是固定词首,[[:digit:]]和[0-9]都可以表示数字,{4}后面4个的字母结尾\>,\b都是固定词尾

[[email protected] ~]# grep "\<1992[[:digit:]]\{4\}\>" shengri.txt
小红  19920105
[[email protected] ~]# grep "\<1992[[:digit:]]\{4\}\b" shengri.txt
小红  19920105
[[email protected] ~]# grep "\b1992[[:digit:]]\{4\}\b" shengri.txt
小红  19920105
[[email protected] ~]# grep "\b1992[[:digit:]]\{4\}\>" shengri.txt
小红  19920105

六、扩展正则表达式

不管是在基本正则表达式中还是扩展正则表达式中,有的通用的符号所表达的意思是相同的
. 表示任意单个字符。

  • 表示前面的字符连续出现任意次,包括0次。
    . 表示任意长度的任意字符,与通配符中的的意思相同。
    \ 表示转义符,当与正则表达式中的符号结合时表示符号本身。
    [ ]表示匹配指定范围内的任意单个字符。
    [^ ]表示匹配指定范围外的任意单个字符。

[[:alpha:]] 表示任意大小写字母。
[[:lower:]] 表示任意小写字母。
[[:upper:]] 表示任意大写字母。
[[:digit:]] 表示0到9之间的任意单个数字(包括0和9)。
[[:alnum:]] 表示任意数字或字母。
[[:space:]] 表示任意空白字符,包括"空格"、"tab键"等。
[[:punct:]] 表示任意标点符号。
[^[:alpha:]] 表示单个非字母字符。
[^[:lower:]] 表示单个非小写字母字符。
[^[:upper:]] 表示单个非大写字母字符。
[^[:digit:]] 表示单个非数字字符。
[^[:alnum:]] 表示单个非数字非字母字符。
[^[:space:]] 表示单个非空白字符。
[^[:punct:]] 表示单个非标点符号字符。
[0-9]与[[:digit:]]等效。
[a-z]与[[:lower:]]等效。
[A-Z]与[[:upper:]]等效。
[a-zA-Z]与[[:alpha:]]等效。
[a-zA-Z0-9]与[[:alnum:]]等效。
[^0-9]与[^[:digit:]]等效。
[^a-z]与[^[:lower:]]等效。
[^A-Z]与[^[:upper:]]等效
[^a-zA-Z]与[^[:alpha:]]等效
[^a-zA-Z0-9]与[^[:alnum:]]等效

^:表示锚定行首,此字符后面的任意内容必须出现在行首,才能匹配。
$:表示锚定行尾,此字符前面的任意内容必须出现在行尾,才能匹配。
^$:表示匹配空行,这里所描述的空行表示"回车",而"空格"或"tab"等都不能算作此处所描述的空行。
^abc$:表示abc独占一行时,会被匹配到。
\<或者\b :匹配单词边界,表示锚定词首,其后面的字符必须作为单词首部出现。
\>或者\b :匹配单词边界,表示锚定词尾,其前面的字符必须作为单词尾部出现。
\B:匹配非单词边界,与\b正好相反。

grep命令默认只支持基本正则表达式,如果想让grep支持扩展正则表达式,则需要使用-E选项,不过这些70%都是通用的符号,查看效果

[[email protected] ~]# grep "b[a-z]" test5
ba
bc
bd
[[email protected] ~]# egrep "b[a-z]" test5
ba
bc
bd
[[email protected] ~]# grep -E "b[a-z]" test5
ba
bc
bd

另外的30%的与基本正则表达式相比,稍微不同一些,不过看起来比正则还要好理解
在正则表达式中{n}表示前面的字符连续出现n次,将会被匹配到
在扩展正则表达式中,{n}表示前面的字符连续出现n次,将会匹配到

在基本正则表达式中,( )表示分组,(ab)表示将ab当作一个整体去处理
在扩展正则表达式中,( )表示分组,(ab)表示将ab当作一个整体去处理

在扩展正则表达式中:
()表示分组
(ab) 表示将ab当作一个整体去处理
\1 表示引用整个表达式中第一个分组的正则匹配到的结果
\2 表示引用整个表达式中第二个分组的正则匹配到的结果
? 表示匹配其前面的字符0或1次

  • 表示匹配其前面的字符至少1次,或者连续多次,连续次数上不封顶
    {n} 表示前面的字符连续出现n次,将会匹配到
    {x,y}表示之前的字符至少连续出现x次,最多连续出现y次,都能匹配到
    {,n} 表示之前的字符连续出现至多n次,最少0次,都会匹配到
    {n,}表示之前的字符连续出现至少n次,才会匹配到

在扩展表达式中,还有一个比较常用的符号,是基本正则表达式中没有的,它就是“|”

它的意思是表示或

[[email protected] ~]# cat test6
kubernetes.com
jenkins.com
rabbitmq.com
zookpeer.com
spring boot.com
dubbo.edu
spring cloud.net
helm.org

找出以.net结尾的行,xxx$以什么为结尾

[[email protected] ~]# grep "net$" test6
spring cloud.net
[[email protected] ~]# egrep "net$" test6
spring cloud.net
[[email protected] ~]# grep -E "net$" test6
spring cloud.net

比如找出以com,net一样结尾的行就可以使用"|",可以使用egrep或者grep -E,()表示将括号内的内容看作一个整体,


[[email protected] ~]# egrep "(com|net)$" test6
kubernetes.com
jenkins.com
rabbitmq.com
zookpeer.com
spring boot.com
spring cloud.net
[[email protected] ~]# grep -E "(com|net)$" test6
kubernetes.com
jenkins.com
rabbitmq.com
zookpeer.com
spring boot.com
spring cloud.net

也可以这么写,不过没有(com|net)$精确,$这个是以什么结尾

[[email protected] ~]# grep -E "com|net" test6
kubernetes.com
jenkins.com
rabbitmq.com
zookpeer.com
spring boot.com
spring cloud.net

常用扩展表达式小结
常用符号
. 表示任意单个字符。

  • 表示前面的字符连续出现任意次,包括0次。
    . 表示任意长度的任意字符,与通配符中的的意思相同。
    \ 表示转义符,当与正则表达式中的符号结合时表示符号本身。
    | 表示"或者"之意
    [ ]表示匹配指定范围内的任意单个字符。
    [^ ]表示匹配指定范围外的任意单个字符。

单个字符匹配相关
[[:alpha:]] 表示任意大小写字母。
[[:lower:]] 表示任意小写字母。
[[:upper:]] 表示任意大写字母。
[[:digit:]] 表示0到9之间的任意单个数字(包括0和9)。
[[:alnum:]] 表示任意数字或字母。
[[:space:]] 表示任意空白字符,包括"空格"、"tab键"等。
[[:punct:]] 表示任意标点符号。
[^[:alpha:]] 表示单个非字母字符。
[^[:lower:]] 表示单个非小写字母字符。
[^[:upper:]] 表示单个非大写字母字符。
[^[:digit:]] 表示单个非数字字符。
[^[:alnum:]] 表示单个非数字非字母字符。
[^[:space:]] 表示单个非空白字符。
[^[:punct:]] 表示单个非标点符号字符。
[0-9]与[[:digit:]]等效。
[a-z]与[[:lower:]]等效。
[A-Z]与[[:upper:]]等效。
[a-zA-Z]与[[:alpha:]]等效。
[a-zA-Z0-9]与[[:alnum:]]等效。
[^0-9]与[^[:digit:]]等效。
[^a-z]与[^[:lower:]]等效。
[^A-Z]与[^[:upper:]]等效
[^a-zA-Z]与[^[:alpha:]]等效
[^a-zA-Z0-9]与[^[:alnum:]]等效

次数匹配相关
? 表示匹配其前面的字符0或1次

  • 表示匹配其前面的字符至少1次,或者连续多次,连续次数上不封顶。
    {n} 表示前面的字符连续出现n次,将会被匹配到。
    {x,y} 表示之前的字符至少连续出现x次,最多连续出现y次,都能被匹配到,换句话说,只要之前的字符连续出现的次数在x与y之间,即可被匹配到。
    {,n} 表示之前的字符连续出现至多n次,最少0次,都会陪匹配到。
    {n,}表示之前的字符连续出现至少n次,才会被匹配到。

位置边界匹配相关
^:表示锚定行首,此字符后面的任意内容必须出现在行首,才能匹配。
$:表示锚定行尾,此字符前面的任意内容必须出现在行尾,才能匹配。
^$:表示匹配空行,这里所描述的空行表示"回车",而"空格"或"tab"等都不能算作此处所描述的空行。
^abc$:表示abc独占一行时,会被匹配到。
\<或者\b :匹配单词边界,表示锚定词首,其后面的字符必须作为单词首部出现。
\>或者\b :匹配单词边界,表示锚定词尾,其前面的字符必须作为单词尾部出现。
\B:匹配非单词边界,与\b正好相反。

分组与后向引用
( ) 表示分组,我们可以将其中的内容当做一个整体,分组可以嵌套。
(ab) 表示将ab当做一个整体去处理。
\1 表示引用整个表达式中第1个分组中的正则匹配到的结果。
\2 表示引用整个表达式中第2个分组中的正则匹配到的结果。

原文地址:https://blog.51cto.com/14143894/2473712

时间: 2024-11-05 02:36:57

linux当中的正则/扩展表达式(grep篇)的相关文章

Linux CentOS7 VMware正则介绍、grep工具、egrep表达式

一.正则介绍 正则是学习shell脚本的必学的内容,正则学的好坏直接影响到shell编程能力. 正则表达式:使用单个字符串来描述或匹配一系列符合某个句法规则的字符串.通常用来检索和替换那些符合某个模式的文本内容.正则表达式贯穿到整个运维日常,无论是查找某个文件,还是查询某个日志文件并分析其内容均用到. 正则表达式是一种思想,一种表示方法.常用的工具grep.sed.awk三剑客. 二.grep上 grep全称是Global Regular Expression Print,表示全局正则表达式版本

linux 文件管理和文本三剑客之一grep,以及正则的使用

1:文件权限 用户对文件的访问有三种:r(读),w(写),x.对于文件和目录有点区别. 文件: r:使用文本查看工具可以查看其文件内容. w:使用文本编辑工具可以编辑其文件内容. x:可向内核请求将此文件运行为进城执行. 目录: r:可以使用ls命令列出文件下子目录和文件的列表. w:可以在此目录中创建和删除文件. x:可使用'ls -l'命令列出目录及子目录的文件属性,可以使用cd切换工作目录为制定目录. 文件权限主要针对三类对象进行定义. owner:属主  , group:属组, othe

linux正则表达式和扩展表达式

Centos的grep的正则表达式和扩展表达式 日期2015.08.28 备注:其简述来自于马哥课堂笔记  grep      grep是一个文本过滤工具根据用户指定的"模式(pattern)"逐行去搜索目标文本,打印匹配到的行:     模式:由正则表达式的元字符及文本字符所编写的过滤条件: 其中,元字符:字符不表示其字面意义,而用于表示通配或控制功能 grep分为两类 基本的正则表达式:BRE 扩展的正则表达式:ERE grep 使用格式 grep  [选项]   模式  [文件]

Linux正则表达式及扩展表达式、egrep命令的说明(8月27日作业练习)

1.总结本此课程中所涉及命令的使用方法及相关示例展示: 权限管理:           权限管理: chmod            所属关系管理: chown, chgrp            文件遮罩码:umask 修改文件权限:chmod          chmod [OPTION]... MODE[,MODE]... FILE...           chmod [OPTION]... OCTAL-MODE FILE...           chmod [OPTION]... -

Linux命令之grep篇

Linux 命令之 grep 篇 一,参数解析及演示 1,-v grep -v xxx 表示不显示包含 xxx 的行或文件,-v 表示取反的意思 举例: ls --file-type | grep -v "\$" 表示不显示当前文件夹下所有子文件夹,因为 ls --file-type 将会在所有的子文件夹后面加上 \,而正则表达式 "\$" 表示以 \ 结尾 2,有待发现...

Linux中重定向、管道和grep命令总结

今天我们来讲下Linux中的重定向.管道和grep命令.由于重定向和管道知识点比较少,但是又比较重要所以和grep命令一起讲. 在将重定向我们先讲下系统的标准输入和输出.在Linux中标准输入(STDIN 0)对应设备:键盘:标准输出(STDOUT 1)和标准错误输出(STDERR 2)对应设备:显示器.重定向就是将标准输入输出重新定位到指定位置或者设备中(比如:文件). I/O重定向 set –C 禁止对已存在的文件进行覆盖重定向 强制覆盖>| set +C 关闭上述功能 输出重定向: >:

正则与sed,grep,awk三剑客

系统登录顺序: /etc/profile /etc/profile.d/a.sh (a.sh自己建的) /root/.bash_profile /root/.bashrc /etc/bashrc /bin/bash 提供命令解释器(终端) 直接打/bin/bash 非登录shell /root/.bashrc /etc/bashrc /etc/profile.d/a 可将别名alias等写入以上三个文件 正则表达式: grep -n  只显示行号 -o 只显示匹配内容 -q  安静模式,不打印

转:Linux性能评测工具之一:gprof篇

1 简介 改进应用程序的性能是一项非常耗时耗力的工作,但是究竟程序中是哪些函数消耗掉了大部分执行时间,这通常都不是非常明显的.GNU 编译器工具包所提供了一种剖析工具 GNU profiler(gprof).gprof 可以为 Linux平台上的程序精确分析性能瓶颈.gprof精确地给出函数被调用的时间和次数,给出函数调用关系. gprof 用户手册网站 http://sourceware.org/binutils/docs-2.17/gprof/index.html 2 功能 Gprof 是G

linux文本处理三剑客之一:grep

linux文本处理三剑客之一:grep grep:文本过滤(模式:pattrn)工具 grep,egrep, fgrep(不支持正则表达式搜索) sed:stream edittor 文本编辑工具 awk:linux上的实现gawk,文本报告生成器 1. grep grep :Global search REguar expression and Print out the line 作用:文本搜索工具,根据用户指定的"模式"对目标文本逐行进行匹配检查:打印匹配到的行 模式:有正则表达