Linux三剑客 grep基础正则使用

网友投稿 965 2022-09-26

Linux三剑客 grep基础正则使用

Linux三剑客 grep基础正则使用

文章目录

​​正则表达式​​​​1 ^ 尖角号 表示匹配以尖角号后面的单词开头的行​​​​2 $ 美元符 表示匹配以美元符后面的单词结尾的行​​​​3 ^$ 组合符 表示空行​​​​4 . 点号 匹配任意一个且只有一个字符​​​​5 \ 转义字符 让有特殊含义的字符输出自身​​​​6 * 星号 前一个字符连续出现0次或N次​​​​7 .* 组合符 匹配所有内容、任何内容、任意内容​​​​8 [abc] 中括号匹配[]集合内的任意一个字符​​​​9 [^abc] 匹配不包含^后的任意字符​​

正则表达式

字符

作用

^

表示匹配以尖角号后面的单词开头的行

$

表示匹配以美元符后面的单词结尾的行

^$

表示空行

.

匹配任意一个且只有一个字符

\

让有特殊含义的字符输出自身

*

重复前一个字符(连续出现)0次或N次

.*

匹配所有内容

^.*

匹配任意多个字符开头的内容

.*$

匹配任意多个字符结尾的内容

[abc]

匹配[]集合内的任意一个字符

[^abc]

不匹配^后的任意字符

1 ^ 尖角号 表示匹配以尖角号后面的单词开头的行

grep '^my' oldboy.txtgrep '^I'

2 $ 美元符 表示匹配以美元符后面的单词结尾的行

grep '448$' oldboy.txtgrep '448'

grep 'm$' oldboy.txtcat -A oldboy.txtgrep 'm $'

我们使用​​m$​​​没找到以m结尾的行,我们cat查看文件内容,发现是以m结尾的行。我们使用​​cat -A​​​查看文件中的隐藏字符发现,m后面还有空格,使用​​m $​​即可匹配

3 ^$ 组合符 表示空行

空格也是字符,查找含有空格的行

grep ' '

grep '^$' oldboy.txtgrep -n '^$'

显示空行一般意义不大,我们一般用​​-v ^$​​排除空行

grep -v '^$' oldboy.txtgrep -nv '^$'

4 . 点号 匹配任意一个且只有一个字符

grep '.'

这样就匹配了所有字符,由于空行不是字符,故这种方式也能排除空行

查找以​​.​​结尾的行

grep '.$'

注意,这条指令匹配的是以任何字符结尾的行,而不是以​​.​​​结尾的行,于是我们需要使用转义字符​​\​​

5 \ 转义字符 让有特殊含义的字符输出自身

查找以​​.​​结尾的行

grep '\.$'

6 * 星号 前一个字符连续出现0次或N次

连续出现:0(0出现1次)、00(0出现2次)、00000(0出现5次)、asdfgh(6个字符连续出现1次)

查找出现0次或多次的0,出现一次也算连续出现

grep '0*'

为何还显示出了文件其他部分呢?

​​*​​表示出现0次或者0次以上,出现0次,相当于是空,即没有这个字符

当grep的正则中什么都不写时,就把文件内容都显示出来了

7 .* 组合符 匹配所有内容、任何内容、任意内容

grep '.*'

​​.*​​也可以匹配空行

我们想匹配从开头到字符t的部分,中间可以是任意字符

grep '^.*t'

我们想匹配从开头到字符o的部分,中间可以是任意字符

grep '^.*o'

我们本来想的是,匹配到一行第一个​​o​​​即可,正则帮我们匹配到了最后一个​​o​​,这就是正则的贪心原则

grep "^.*zx" oldboy.txt # 从开头匹配到zx停止grep "fq.*$" oldboy.txt # 从fq开始匹配到结尾

8 [abc] 中括号匹配[]集合内的任意一个字符

grep '[abc]'

匹配[abc]内任意一个字符,可我们看见匹配了ac,这是俩字符,我们显示一下匹配过程

grep -o '[abc]'

a和c是分两次匹配的

我们一般这样使用:[a-z]、[A-Z]、[0-9],用于匹配ASCII码表上相邻的字符

grep '[a-z]'

grep '[a-zA-Z0-9]' oldboy.txtgrep '[a-Z0-9]' oldboy.txtgrep -i '[a-z0-9]' oldboy.txt # -i不区分大小写

grep '[a-Z 0-9]' oldboy.txtgrep '[a-Z,0-9]' oldboy.txt # 匹配逗号

[]还能去掉特殊含义:​​[a-z|A-Z|0-9]​​​表示匹配大小写字母和数字,以及​​|​​,有点类似于转义字符的功能

9 [^abc] 匹配不包含^后的任意字符

在中括号里,​​^​​表示取反

grep '[^abc]'

​​(0基础学Linux系列)2.03 Linux正则​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Jackson多态序列化图文详解
下一篇:OSI七层模型简介
相关文章

 发表评论

暂时没有评论,来抢沙发吧~