基础正则三剑客——grep

  • 2019-09-02
  • 0
  • 0

1、基础正则表达式

正则表达式 描述
转义符,将特殊字符进行转义,忽略其特殊意义
\^  匹配行首,awk中,^则是匹配字符串的开始 
匹配行尾,awk中,$则是匹配字符串的结尾
^$  表示空行
匹配除换行符\n之外的任意单个字符
.* 匹配所有
[ ] 匹配包含在[字符]之中的任意一个字符
[^ ] 匹配[^字符]之外的任意一个字符
[ – ]  匹配[]中指定范围内的任意一个字符
? 匹配之前的项1次或者0次
+ 匹配之前的项1次或者多次
* 匹配之前的项0次或者多次, .*
()  匹配表达式,创建一个用于匹配的子串 
{ n }  匹配之前的项n次,n是可以为0的正整数
{n,}     之前的项至少需要匹配n次
{n,m} 指定之前的项至少匹配n次,最多匹配m次,n<=m
交替匹配 两边的任意一项ab(c d)匹配abc或abd

2、特定字符

 
>[[:space:]]   空格
[[:digit:]]  [0-9]
[[:lower:]]  [a-z]
[[:upper:]]  [A-Z]
[[:alpha:]]   [a-Z]

3、grep正则实战

3.1、过滤以m开头的行

[root@Shell ~]# grep "^m" test.txt

3.2、过滤以m结尾的行

[root@Shell ~]# grep "m$" test.txt

3.3、排除空行, 并打印行号

[root@shell ~]# grep -vn "^$" ljc.txt

3.4、匹配任意一个字符,不包括空行

[root@shell ~]# grep "." ljc.txt

3.5、匹配所有

[root@shell ~]# grep ".*" ljc.txt

3.6、匹配单个任意字符

[root@node1 ~]# grep "lizhen.a" ljc.txt

3.7、以点结尾的

[root@shell ~]# grep "\.$" ljc.txt

3.8、精确匹配到

[root@shell ~]# grep -o "8*" ljc.txt

3.9、匹配有abc的行

[root@shell ~]# grep "[abc]" ljc.txt

3.10、匹配数字所在的行"[0-9]"

[root@shell ~]# grep "[0-9]" ljc.txt

3.11、匹配所有小写字母[a-z]

[root@shell ~]# grep "[a-z]" ljc.txt

3.12、重复8三次

[root@shell ~]# grep "8\{3\}" ljc.txt

3.13、重复数字8, 3-5次

[root@shell ~]# grep -E "8{3,5}" test.txt

3.14、至少1次或1次以上

[root@shell ~]# grep -E "8{1,}" ljc.txt

评论

还没有任何评论,你来说两句吧

提供支持 - 友情链接 - 衫小寨