码迷,mamicode.com
首页 > 系统相关 > 详细

Linux5.5 正则

时间:2017-11-18 21:57:24      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:空行   grep   game   nbsp   实现   bin   --   cin   命令   

正则:一串有规律的字符串 

grep命令

  grep可以实现的,egrep都可以实现。

  grep    [-cinvrABC]   ‘word‘   filename【自带color选项】

#无任何选项
[root@chy002 tmp]# grep ‘root‘ passwd.txt
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

  -c 行数

[root@chy002 tmp]# grep -c ‘root‘ passwd.txt
2

  -i  不区分大小写

[root@chy002 tmp]# grep -i ‘root‘ passwd.txt
ROOt
ROOT
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

  -n  显示行号

[root@chy002 tmp]# grep -in ‘root‘ passwd.txt
1:ROOt
2:ROOT
3:root:x:0:0:root:/root:/bin/bash
12:operator:x:11:0:operator:/root:/sbin/nologin

  -v  取反

#不带nologin行过滤
[root@chy002 tmp]# grep -vni ‘nologin‘ passwd.txt
1:ROOt
2:ROOT
3:root:x:0:0:root:/root:/bin/bash
8:sync:x:5:0:sync:/sbin:/bin/sync
9:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
10:halt:x:7:0:halt:/sbin:/sbin/halt
22:chy002:x:1000:1000::/home/chy002:/bin/bash
23:user:x:1001:1001::/home/user:/bin/bash
24:user1:x:1002:1006::/home/user1:/bin/bash
25:user2:x:1004:1002::/home/user2:/bin/bash
26:user3:x:1005:1002::/tmp/user3:/bin/bash
27:user4:x:1009:1006::/home/user5:/bin/bash

  -r  遍历所有子目录

[root@chy002 tmp]# grep -in ‘root‘ /tmp/
grep: /tmp/: 是一个目录
[root@chy002 tmp]# grep -rin ‘root‘ /tmp/
/tmp/123.txt:1:root:x:0:0:root:/root:/bin/bash
/tmp/123.txt:10:operator:x:11:0:operator:/root:/sbin/nologin
/tmp/321.txt:1:root:x:0:0:root:/root:/bin/bash
/tmp/321.txt:10:operator:x:11:0:operator:/root:/sbin/nologin
/tmp/passwd.txt:1:ROOt
/tmp/passwd.txt:2:ROOT
/tmp/passwd.txt:3:root:x:0:0:root:/root:/bin/bash
/tmp/passwd.txt:12:operator:x:11:0:operator:/root:/sbin/nologin
... ...

  -A  后面跟数字过滤出符合要求的行以及下面n行

[root@chy002 tmp]# grep -nA2 ‘root‘ passwd.txt
3:root:x:0:0:root:/root:/bin/bash
4-bin:x:1:1:bin:/bin:/sbin/nologin
5-daemon:x:2:2:daemon:/sbin:/sbin/nologin
--
12:operator:x:11:0:operator:/root:/sbin/nologin
13-games:x:12:100:games:/usr/games:/sbin/nologin
14-ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

  -B   过滤出符合要求的行及上面的n行

  -C  同时过滤出符合要求的行及上下各n行

 

       [0-9a-zA-Z]

[root@chy002 tmp]# grep -nv ‘[0-9]‘ passwd.txt
1:ROOt
2:ROOT

  [^]  非的意思

#匹配非小写字母开头的行
[root@chy002 tmp]# grep -n ‘^[^a-z]‘ passwd.txt
1:ROOt
2:ROOT

  [^$]  空行

#去除文本中的空行
[root@chy002 tmp]# grep -nv ‘^$‘ 1.txt
1:sadf
2:123
4:qwe123
6:Q2

  o*o  表示*号左边的字符重复0-n次,一定匹配右边一个字符o

[root@chy002 tmp]# grep -n ‘r*o‘ passwd.txt
2:roooooo
3:ro
8:root:x:0:0:root:/root:/bin/bash
9:bin:x:1:1:bin:/bin:/sbin/nologin
10:daemon:x:2:2:daemon:/sbin:/sbin/nologin
... ...

  r.o   r和o中间任意一个字符,必须有一个

[root@chy002 tmp]# grep -n ‘r.o‘ passwd.txt
2:roooooo
8:root:x:0:0:root:/root:/bin/bash
17:operator:x:11:0:operator:/root:/sbin/nologin

  .*   匹配全部,包含所有字符及空行

  

  { }  花括号,使用egrep或者 -E 可以不使用脱义符号

[root@chy002 tmp]# grep ‘o{2}‘ passwd.txt
o{2}
[root@chy002 tmp]# grep ‘o\{2\}‘ passwd.txt
roooooo
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin

  o+b  b前面1次或者多次o,必须b紧挨着o,加号还是需要脱义,可以使用egrep 或 -E 

[root@chy002 tmp]# grep ‘o\+t‘ passwd.txt
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

  o?b  b前面o重复次数0或者1,必须t紧挨着o

[root@chyuanliu-01 tmp]# grep ‘o\?b‘ 123.txt
robt
ro123bt
roobt
roobbt
robobt
rbt
orbt

  |   或者符号

[root@chyuanliu-01 tmp]# grep ‘root\|nologin‘ passwd.txt
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

sed命令

  sed关键在于替换,与grep匹配最主要的区别在于能对匹配的字符进行删除更改等操作,无color选项。

  

  

 

Linux5.5 正则

标签:空行   grep   game   nbsp   实现   bin   --   cin   命令   

原文地址:http://www.cnblogs.com/chyuanliu/p/7857849.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!