10月16日任务php
9.1 正则介绍_grep上shell
9.2 grep中编程
9.3 grep下vim
扩展centos
把一个目录下,过滤全部*.php文档中含有eval的行bash
grep -r --include="*.php" 'eval' /datassh
9.1 正则介绍_grep上编程语言
什么是正则post
正则就是一串有规律的字符串学习
掌握好正则对于编写shell脚本有很大帮助
各类编程语言中都有正则,原理是同样的
本章将要学习grep/egrep、sed 、awk 三剑客
#Cent OS 7.0如下的版本grep和egrep是不带颜色显示的,须要手动添加alias。
[root@centos6 ~]# vim .bashrc [root@centos6 ~]# . .bashrc [root@centos6 ~]# which egrep alias egrep='egrep --color=auto' /bin/egrep [root@centos6 ~]# which grep alias grep='grep --color=auto' /bin/grep
grep
grep [-cinvABC] 'word' filename
-c 行数
-i 不区分大小写
-n 显示行号
-v 取反
-r 遍历全部子目录
-A 后面跟数字,过滤出符合要求的行以及下边的n行
-B 同上,过滤出符合要求的行以及上边的n行
-C 同上,同时过滤出符合要求的行以及上下各n行
[root@centos6 ~]# which grep
alias grep='grep --color=auto'
/bin/grep
[root@centos6 ~]# grep -c 'nologin' /etc/passwd
16
[root@centos6 ~]# grep -n 'nologin' /etc/passwd
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
11:operator:x:11:0:operator:/root:/sbin/nologin
12:games:x:12:100:games:/usr/games:/sbin/nologin
13:gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
14:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
15:nobody:x:99:99:Nobody:/:/sbin/nologin
16:vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
17:saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/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
20:ntp:x:38:38::/etc/ntp:/sbin/nologin
[root@centos6 ~]# grep -nv 'nologin' /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8:halt:x:7:0:halt:/sbin:/sbin/halt
[root@centos6 ~]# grep -B2 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
--
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@centos6 ~]# grep -A2 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
--
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
[root@centos6 ~]# grep -C1 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
--
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
9.二、grep (中)
grep/egrep示例
grep -n 'root' /etc/passwd
grep -nv 'nologin' /etc/passwd
grep '[0-9]' /etc/inittab
grep -v '[0-9]' /etc/inittab
grep -v '^#' /etc/inittab
grep -v '^#' /etc/inittab -v '^$'
grep '^[^a-zA-Z]' text.txt # ^在方括号外表示以什么开头,在方括号内表示取非
grep 'r.o' test.txt # .表示一个字符
grep 'oo*' test.txt # *表示*左边的字符重复0-n次
grep '.*' test.txt # .*表示匹配任意字符包括空行
grep 'o\{2\}' /etc/passwd # 特殊符号须要用脱意符号\,否则没法识别
egrep 'o{2}' /etc/passwd # 用egrep命令,不须要脱意,{}表示前边字符的重复范围
egrep 'o+' /etc/passwd # +表示+左边字符重复1-n次
egrep 'oo?' /etc/passwd # ?表示?前边的字符重复0或者1次
egrep 'root|nologin' /etc/passwd # |表示或者
egrep '(oo){2}' /etc/passwd
[root@centos6 ~]# grep '[0-9]' passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin [root@centos6 ~]# grep -v '[0-9]' passwd qwwwewer [root@centos6 ~]# vim inittab [root@centos6 ~]# grep -nv '#' inittab 26:aaaaaaaaaaaa 27:ashdfoaoiifuoa 28:111111111111111 30:id:3:initdefault: [root@centos6 ~]# grep -v '#' inittab aaaaaaaaaaaa ashdfoaoiifuoa 111111111111111 id:3:initdefault: [root@centos6 ~]# grep -n '#' inittab 1:# inittab is only used by upstart for the default runlevel. 2:# 3:# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM. 4:# 5:# System initialization is started by /etc/init/rcS.conf 6:# 7:# Individual runlevels are started by /etc/init/rc.conf 8:# 9:# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf 10:# 11:# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf, 12:# with configuration in /etc/sysconfig/init. 13:# 14:# For information on how to write upstart event handlers, or how 15:# upstart works, see init(5), init(8), and initctl(8). 16:# 17:# Default runlevel. The runlevels used are: 18:# 0 - halt (Do NOT set initdefault to this) 19:# 1 - Single user mode 20:# 2 - Multiuser, without NFS (The same as 3, if you do not have networking) 21:# 3 - Full multiuser mode 22:# 4 - unused 23:# 5 - X11 24:# 6 - reboot (Do NOT set initdefault to this) 25:# 29:(&*&^$^$^#%# [root@centos6 ~]# grep -n '^#' inittab 1:# inittab is only used by upstart for the default runlevel. 2:# 3:# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM. 4:# 5:# System initialization is started by /etc/init/rcS.conf 6:# 7:# Individual runlevels are started by /etc/init/rc.conf 8:# 9:# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf 10:# 11:# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf, 12:# with configuration in /etc/sysconfig/init. 13:# 14:# For information on how to write upstart event handlers, or how 15:# upstart works, see init(5), init(8), and initctl(8). 16:# 17:# Default runlevel. The runlevels used are: 18:# 0 - halt (Do NOT set initdefault to this) 19:# 1 - Single user mode 20:# 2 - Multiuser, without NFS (The same as 3, if you do not have networking) 21:# 3 - Full multiuser mode 22:# 4 - unused 23:# 5 - X11 24:# 6 - reboot (Do NOT set initdefault to this) 25:# [root@centos6 ~]# grep -n '^[0-9]' inittab 28:111111111111111 [root@centos6 ~]# grep -n '^[^0-9]' inittab 1:# inittab is only used by upstart for the default runlevel. 2:# 3:# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM. 4:# 5:# System initialization is started by /etc/init/rcS.conf 6:# 7:# Individual runlevels are started by /etc/init/rc.conf 8:# 9:# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf 10:# 11:# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf, 12:# with configuration in /etc/sysconfig/init. 13:# 14:# For information on how to write upstart event handlers, or how 15:# upstart works, see init(5), init(8), and initctl(8). 16:# 17:# Default runlevel. The runlevels used are: 18:# 0 - halt (Do NOT set initdefault to this) 19:# 1 - Single user mode 20:# 2 - Multiuser, without NFS (The same as 3, if you do not have networking) 21:# 3 - Full multiuser mode 22:# 4 - unused 23:# 5 - X11 24:# 6 - reboot (Do NOT set initdefault to this) 25:# 26:aaaaaaaaaaaa 27:ashdfoaoiifuoa 29:(&*&^$^$^#%# 30:id:3:initdefault:
9.三、grep(下)
[root@centos6 ~]# grep 'r.o' passwd root:x:0:0:root:/root:/bin/bash ahkdhfa:r>oo:dfsa:13243 operator:x:11:0:operator:/root:/sbin/nologin [root@centos6 ~]# grep 'ntp.*nologin' passwd #匹配以ntp开头,nologin结束的行 ntp:x:38:38::/etc/ntp:/sbin/nologin [root@centos6 ~]# grep '{2}' passwd #错误示范 [root@centos6 ~]# grep 'o{2}' passwd #错误示范 [root@centos6 ~]# grep 'o\{2\}' passwd # {}须要加脱意符号\ root:x:0:0:root:/root:/bin/bash ahkdhfa:r>oo:dfsa:13243 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin
#这样操做起来特别麻烦,如何简单操做呢,咱们能够用到egrep命令了,或者grep -E
[root@centos6 ~]# egrep 'o{2}' passwd root:x:0:0:root:/root:/bin/bash ahkdhfa:r>oo:dfsa:13243 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin [root@centos6 ~]# grep -E 'o{2}' passwd root:x:0:0:root:/root:/bin/bash ahkdhfa:r>oo:dfsa:13243 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin [root@centos6 ~]# egrep 'o+t' passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [root@centos6 ~]# egrep 'o?t' passwd root:x:0:0:root:/root:/bin/bash shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt operator:x:11:0:operator:/root:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin [root@centos6 ~]# egrep 'o?1o' passwd bin:x:1o:1:bin:/bin:/sbin/nologin [root@centos6 ~]# grep -E 'root|nologin' passwd root:x:0:0:root:/root:/bin/bash bin:x:1o:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin