Chinaunix首页 | 论坛 | 博客
  • 博客访问: 146720
  • 博文数量: 70
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 770
  • 用 户 组: 普通用户
  • 注册时间: 2017-11-04 11:19
文章分类

全部博文(70)

文章存档

2018年(69)

2016年(1)

我的朋友

分类: LINUX

2018-07-04 00:39:57

9.1 正则介绍_grep(上)
正则就是一串有规律的字符串
掌握正则对于编写shell脚本有很大帮助
各种编程语言中都有正则,原理是一样的
三剑客:grep/egrep、sed、awk

grep [-cinvABC] 'word' 
"-n":显示行号。在文件中本身的行号
“-i”:不区分大小写
“-c”:行数
"-v":取反
"-r":遍历所有子目录    // ~] # grep -r 'root' /etc/。所有子目录文件中包含root字符的行,及其所在文件

点击(此处)折叠或打开

  1. [root@localhost grep]# grep -r 'root' /etc/ | grep passwd
  2. /etc/passwd:root:x:0:0:root:/root:/bin/bash
  3. /etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin
  4. /etc/passwd-:root:x:0:0:root:/root:/bin/bash
  5. /etc/passwd-:operator:x:11:0:operator:/root:/sbin/nologin
  6. /etc/postfix/main.cf:# the system passwd file in the chroot jail is just not practical.
“-A”:后面跟数字,过滤出符合要求的行,以及下面n行
"-B":后面跟数字,过滤出符合要求的行,以及上面n行
“-C”:后面跟数字,过滤出符合要求的行,以及上下各n行

点击(此处)折叠或打开

  1. [root@localhost ~]# mkdir grep
  2. [root@localhost ~]#
  3. [root@localhost ~]# cd grep/
  4. [root@localhost grep]# cp /etc/passwd ./
  5. [root@localhost grep]#
  6. [root@localhost grep]# ls
  7. passwd
  8. [root@localhost grep]# grep 'nologin' passwd
  9. bin:x:1:1:bin:/bin:/sbin/nologin
  10. ......
  11. [root@localhost grep]# which grep
  12. alias grep='grep --color=auto'
  13. /usr/bin/grep


点击(此处)折叠或打开

  1. [root@localhost grep]# grep -A2 'root' passwd
  2. root:x:0:0:root:/root:/bin/bash
  3. bin:x:1:1:bin:/bin:/sbin/nologin
  4. daemon:x:2:2:daemon:/sbin:/sbin/nologin
  5. --
  6. operator:x:11:0:operator:/root:/sbin/nologin
  7. games:x:12:100:games:/usr/games:/sbin/nologin
  8. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
  9. [root@localhost grep]# grep -B2 'root' passwd
  10. root:x:0:0:root:/root:/bin/bash
  11. --
  12. halt:x:7:0:halt:/sbin:/sbin/halt
  13. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
  14. operator:x:11:0:operator:/root:/sbin/nologin
  15. [root@localhost grep]# grep -C2 'root' passwd
  16. root:x:0:0:root:/root:/bin/bash
  17. bin:x:1:1:bin:/bin:/sbin/nologin
  18. daemon:x:2:2:daemon:/sbin:/sbin/nologin
  19. --
  20. halt:x:7:0:halt:/sbin:/sbin/halt
  21. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
  22. operator:x:11:0:operator:/root:/sbin/nologin
  23. games:x:12:100:games:/usr/games:/sbin/nologin
  24. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin


9.2  grep(中)

grep的正则使用:

点击(此处)折叠或打开

  1. [root@localhost grep]# grep '[0-9]' passwd    //匹配任意数字,包含任意数字的行
  2. root:x:0:0:root:/root:/bin/bash
  3. bin:x:1:1:bin:/bin:/sbin/nologin
  4. daemon:x:2:2:daemon:/sbin:/sbin/nologin
  5. adm:x:3:4:adm:/var/adm:/sbin/nologin
  6. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  7. sync:x:5:0:sync:/sbin:/bin/sync
  8. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
  9. halt:x:7:0:halt:/sbin:/sbin/halt
  10. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
  11. operator:x:11:0:operator:/root:/sbin/nologin
  12. games:x:12:100:games:/usr/games:/sbin/nologin
  13. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
  14. nobody:x:99:99:Nobody:/:/sbin/nologin
  15. systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
  16. dbus:x:81:81:System message bus:/:/sbin/nologin
  17. polkitd:x:999:997:User for polkitd:/:/sbin/nologin
  18. postfix:x:89:89::/var/spool/postfix:/sbin/nologin
  19. sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

[root@localhost ~]# grep -v '^#' a.txt | grep -v '^$'    //过滤不以 # 开头并且不为空的行。





9.3 grep(下)

点击(此处)折叠或打开

  1. [root@localhost grep]# grep 'r.o' passwd    //这里的 “.”代表任意一个字符
  2. root:x:0:0:root:/root:/bin/bash
  3. operator:x:11:0:operator:/root:/sbin/nologin

星号匹配符号:

点击(此处)折叠或打开

  1. [root@localhost grep]# grep 'ro*' passwd    //星号左边的符号出现任意多次。一个r会被匹配到,ro会被匹配到,roooo...也会被匹配。 .* ”代表匹配所有
  2. root:x:0:0:root:/root:/bin/bash
  3. adm:x:3:4:adm:/var/adm:/sbin/nologin
  4. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  5. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
  6. operator:x:11:0:operator:/root:/sbin/nologin
  7. games:x:12:100:games:/usr/games:/sbin/nologin
  8. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
  9. systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
明确匹配次数的表示:

grep需要使用脱义字符来将“{}”进行脱义。如果不想使用“\”来进行脱义,可以使用egrep。也可以是一个范围   ]# grep 'o\{0,3\}' passwd   。范围:0-3次都匹配。








































阅读(1016) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~