linux 正则表达式 使用grep命令

 

 

最常应用正则表达式命令是 awk sed grep

 

[root@MongoDB ~]# cat mike.log 
I am mike!
I like linux.

I like play football, tennis and reading.
my qq is 123456789!
my blog is https://i.cnblogs.com
my blog is i.miek.com
I am miek.
not MIEK
NOT MIKE

 

 

 

 

 

基础正则字符说明

1.^word 匹配以word开头的内容  vi/vim编辑器里^代表一行的开头

2.word$ 匹配以word结尾的内容  vi/vim编辑器里$代表一行的结尾

3. ^$ 表示空行

 

a.过滤出来以m开头的行

 

[root@MongoDB ~]# grep "^m" mike.log 
my qq is 123456789!
my blog is https://i.cnblogs.com
my blog is i.miek.com

b.过滤出来以m结尾的行

 

[root@MongoDB ~]# grep "m$" mike.log 
my blog is https://i.cnblogs.com
my blog is i.miek.com

 

c.过滤匹配空行的行

grep -n 显示匹配的行号

 

[root@MongoDB ~]# grep -n '^$' mike.log 
3:
11:

 

 

 

grep -v 排除内容  指定字段不显示

过滤出 不带 空行的行,其他行都打印

 

[root@MongoDB ~]# grep -vn "^$" mike.log 
1:I am mike!
2:I like linux.
4:I like play football, tennis and reading.
5:my qq is 123456789!
6:my blog is https://i.cnblogs.com
7:my blog is i.miek.com
8:I am miek.
9:not MIEK
10:NOT MIKE

 

 

 

4. . 代表且只能代表任意一个字符。

5. \ 转义

6. * 重复0个或多个前面的一个字符 例如o* 匹配没有o,有一个o或多个o

7 .* 匹配所有字符  ^.*以任意多个字符开头, .*$ 以任意多个字符结尾

 

a. 匹配任意一个字符  .

因为第三行没有字符 没有匹配到

 

[root@MongoDB ~]# grep -n "." mike.log 
1:I am mike!
2:I like linux.
4:I like play football, tennis and reading.
5:my qq is 123456789!
6:my blog is https://i.cnblogs.com
7:my blog is i.miek.com
8:I am miek.
9:not MIEK
10:NOT MIKE

 

 

.*

 

[root@MongoDB ~]# grep -n ".*" mike.log 
1:I am mike!
2:I like linux.
3:
4:I like play football, tennis and reading.
5:my qq is 123456789!
6:my blog is https://i.cnblogs.com
7:my blog is i.miek.com
8:I am miek.
9:not MIEK
10:NOT MIKE
11:

 

 

 

 匹配 mi..    .. 任意字符

root@MongoDB ~]# grep -n "mi.." mike.log 
1:I am mike!
7:my blog is i.miek.com
8:I am miek.

 

grep -i 不区分大小写

[root@MongoDB ~]# grep -ni "mi.." mike.log 
1:I am mike!
7:my blog is i.miek.com
8:I am miek.
9:not MIEK
10:NOT MIKE

 

匹配以.结尾 需要转义

[root@MongoDB ~]# grep -n "\.$" mike.log 
2:I like linux.
4:I like play football, tennis and reading.
8:I am miek.

 

-o 只显示匹配的内容

[root@MongoDB ~]# grep -no "mi.." mike.log 
1:mike
7:miek
8:miek

 

 

8. [abc]  匹配字符串集合内任意一个字符 [a-zA-Z],[0-9]

9. [^abc]  匹配不包含^后的任意一个字符的内容

中括号里的^为取反

 

匹配0-9数字的行 匹配数字的行

[root@MongoDB ~]# grep  "[0-9]" mike.log 
my qq is 123456789!

 

posted @ 2019-06-01 17:47  minger_lcm  阅读(367)  评论(0编辑  收藏  举报