您的位置 首页 php

shell脚本-linux正则表达式详解

file1.txt—测试文件

[ root @bogon mnt]# nl file1.txt 
 1 linux is very much!
 2 java is very much!
 3 my age is :30
 4 mysql is very much!
 5 php is very + much!
 6 C is very * linux much!
 7 y
 8 ips address is 192.168.1.1
 9 Linux is very much!
 10 C is very much linux
 11 s
 12 my ip addre is :192.168.85.130
 13 linux is veryvery much
 14 linux is veryveryvery much
 15 linux is veryveryveryveryvery much
 

^linux 以linux开头的行

示例:

^表示以某某开头

[root@bogon mnt]# grep -E '^linux' file1.txt 
linux is very much!
 

$linux 以linux结尾的行

示例:

$表示以某某结尾

[root@bogon mnt]# grep -E 'linux!$ ' file1.txt 
C is very much linux!
 

. 匹配任意单字符

示例:

[root@bogon mnt]# grep -En '.' file1.txt 
1:linux is very much!
2:java is very much!
4:mysql is very much!
5:php is very much!
6:C is very linux much!
8:C is very much linux!
9:Linux is very much!
10:C is very much linux
 

.+ 匹配任意多个字符

示例:

[root@bogon mnt]# grep -En '.+' file1.txt 
1:linux is very much!
2:java is very much!
3:my age is :30
4:mysql is very much!
5:php is very + much!
6:C is very * linux much!
7:y
8:ips address is 192.168.1.1
9:Linux is very much!
10:C is very much linux
11:s
12:my ip addre is :192.168.85.130
13:linux is veryvery much
14:linux is veryveryvery much
15:linux is veryveryveryveryvery much
 

.* 匹配0个或者多个字符

示例:

[root@bogon mnt]# grep -En '.*' file1.txt 
1:linux is very much!
2:java is very much!
3:my age is :30
4:mysql is very much!
5:php is very + much!
6:C is very * linux much!
7:y
8:ips address is 192.168.1.1
9:Linux is very much!
10:C is very much linux
11:s
12:my ip addre is :192.168.85.130
13:linux is veryvery much
14:linux is veryveryvery much
15:linux is veryveryveryveryvery much
 

[0-9a-z] 匹配[]内任意一个字符

示例:

[root@bogon mnt]# grep -En '.*[0-9a-z].*' file1.txt 
1:linux is very much!
2:java is very much!
3:my age is :30
4:mysql is very much!
5:php is very + much!
6:C is very * linux much!
7:y
8:ips address is 192.168.1.1
9:Linux is very much!
10:C is very much linux
11:s
12:my ip addre is :192.168.85.130
13:linux is veryvery much
14:linux is veryveryvery much
15:linux is veryveryveryveryvery much

查询包含0-9多个数字的行
[root@bogon mnt]# grep -En '[0-9]+ ' file1.txt 
3:my age is :30
11:my ip addre is :192.168.85.130
 

(very)+ 出现多次linux的单词

示例:

[root@bogon mnt]# grep -E '(very)+ ' file1.txt 
linux is very much!
java is very much!
mysql is very much!
php is very + much!
C is very * linux much!
Linux is very much!
C is very much linux
linux is veryvery much
linux is veryveryvery much
linux is veryveryveryveryvery much
 

(very){2} very出现了2次以上的

示例:

[root@bogon mnt]#  grep  -En '(very){2} ' file1.txt 
13:linux is veryvery much
14:linux is veryveryvery much
15:linux is veryveryveryveryvery much

包含3-5次的very
[root@bogon mnt]# grep -En '(very){3,5}' file1.txt 
14:linux is veryveryvery much
15:linux is veryveryveryveryvery much
 

\ 转义字符 ,只用来屏蔽一个元字符的特殊含义

示例:

只查询ip地址
[root@bogon mnt]# grep -En '[0-9]+\. [0-9]+\.[0-9]+\.[0-9]+' file1.txt 
11:my ip addre is :192.168.85.130
 

grep搜索包含特定字符的行

示例:

只在file1.txt中搜索包含linux的行

[root@bogon mnt]# grep 'linux' file1.txt 
linux is very much!
C is very linux much!
C is very much linux!
 

grep -c 表示包含linux字符的行在文件中共有几行

[root@bogon mnt]# grep -c 'linux' file1.txt 
3
 

grep -n 表示包含linux字符的行具体在文件中的第几行

[root@bogon mnt]# grep -n 'linux' file1.txt 
1:linux is very much!
5:C is very linux much!
6:C is very much linux!
 

grep -i 表示对包含linux字符的单词大小写进行忽略

[root@bogon mnt]# grep -i 'linux' file1.txt 
linux is very much!
C is very linux much!
C is very much linux!
Linux is very much!
 

grep -v 过滤 表示在文件中不包含指定字符的行

[root@bogon mnt]# grep -v 'linux' file1.txt 
java is very much!
mysql is very much!
php is very much!
Linux is very much!
 

文章来源:智云一二三科技

文章标题:shell脚本-linux正则表达式详解

文章地址:https://www.zhihuclub.com/151970.shtml

关于作者: 智云科技

热门文章

网站地图