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!