Loading

shell编程学习笔记之正则表达式初识

1.对单字符的查找:

  1.1单字符: ‘X’

    $ grep ‘q’ passwd //查找单个字符

  1.2 范围字符 [] [^]

  1.3 任意字符 .

$ grep '[1-9]' passwd //查找某个范围的单个字符(范围)

$ grep '[a-zA-Z]' passwd //查找某个范围的单个字符(范围)

$ grep '[a-zA-Z:/,_-()]' passwd ------------>$ grep '[^0-9]' passwd //取反

 

2.正则表达式的符号:

  边界字符:

2.1头字符: ^ :^root root开始的

2.2 围字符:$ : $flase :flase结束的

2.3 空行 : ^$ :头尾相碰表示空行

元字符:

\w :匹配任意字类字符

 

 

 

 

 

 

 

 

\W :匹配任意非字类字符

 

    \b :代表字符的分割

      

   

      

 

3.正则表达字符组合

  grep ‘[0-9][0-9]’ passwd

  3.1重复

* : 零次或多次 匹配前面的字符或表达式

+ :一次或多次 ……

?:零次或一次……


 1 qi@zhuandshao:~$ cat test
 2 
 3 sesesese
 4 
 5 
 6 se
 7 
 8 
 9 seeeee
10 
11 
12 
13 s+s+
14 
15 
16 50000000

 


 

1 qi@zhuandshao:~$ grep 'se*' test
2 
3 sesesese
4 
5 se
6 
7 seeeee
8 
9 s+s+

 

qi@zhuandshao:~$ grep 'se+' test

qi@zhuandshao:~$ grep 's+' test

s+s+

qi@zhuandshao:~$ echo se+se+ >> test

qi@zhuandshao:~$ grep 'se+' test

se+se+

qi@zhuandshao:~$ grep 'se\+' test //加上反斜杠,进行转义

sesesese

se

seeeee

se+se+

qi@zhuandshao:~$ grep 'se?' test

qi@zhuandshao:~$ grep 'se\?' test

sesesese

se

seeeee

s+s+

se+se+

qi@zhuandshao:~$

qi@zhuandshao:~$ grep '\(se\)*' test //零次匹配会出现空行或者完全不匹配

sesesese


se


seeeee



s+s+


50000000

se+se+


qi@zhuandshao:~$ grep '\(se\)\+' test //反斜杠 使用括号对字符串重复

sesesese

se

seeeee

se+se+

 


  3.2重复特定次数 {n,m}

qi@zhuandshao:~$ grep '[0-9]{2,3}' passwd

qi@zhuandshao:~$ grep '[0-9]\{2,3\}' passwd //重复两到三次


  3.3 逻辑符号表示

    贪婪匹配:尽可能匹配最大长度

    任意字符串: .*

      

   逻辑或 |

qi@zhuandshao:~$ grep 'bin/\(false\|true\)' passwd


systemd-timesync:x:100:102:systemd Time Synchronization,,,:/run/systemd:/bin/false

systemd-network:x:101:103:systemd Network Management,,,:/run/systemd/netif:/bin/false

systemd-resolve:x:102:104:systemd Resolver,,,:/run/systemd/resolve:/bin/false

systemd-bus-proxy:x:103:105:systemd Bus Proxy,,,:/run/systemd:/bin/false

 

 

  3.4.字符组合小结:

   

 

4.正则表达式案例

  4.1.匹配4-10位的QQ号码

    grep '^[0-9]\{4,10\}$' qq.txt //首尾^$


  4.2匹配1518位身份证号码 (支持X

    $ grep '^[1-9]\([0-9]\{13\}\|[0-9]\{16\}\)[0-9xX]&' qq.txt


  4.3 匹配密码 (数字、26字母、下划线)

    $grep ‘^\w\+$’ qq.txt

 


5.正则表达式总结

 



 

posted @ 2017-08-01 16:19  Q1mt  阅读(370)  评论(0编辑  收藏  举报