正则介绍_grep(上)

正则就是一串有规律的字符串

掌握好正则对于编写shell脚本有很大帮助

各种编程语言中都有正则,原理是一样的

本章将要学习grep/egrep、sed、awk (网页三剑客)

grep

# grep "nologin" passwd

blob.png

//查看一个关键字有多少行

# grep -c "nologin" passwd

 //显示行号

# grep -n "nologin" passwd

blob.png

过滤出不区分大小写

# grep -ni "nologin" passwd

blob.png

过滤不包含关键字的行

# grep -vni "nologin" passwd

blob.pngff

遍历过来所有目录

# grep -rn "nologin" /etc/

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


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


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

grep(中)

显示包含root的行号

# grep -n 'root' /etc/passwd

显示不包含root的行号.

# grep -nv 'nologin' /etc/passwd

过滤出0-9中的任意个字符

# grep '[0-9]'/etc/inittab

过滤取饭出0-9中的任意个字符

# grep -v '[0-9]' /etc/inittab

过滤出已#号开头的行

# grep -n "^#" /etc/inittab

过滤出不已#开头的行

# grep -v '^#' /etc/inittabgrep -v '^#' /etc/inittab|grep -v  '^$'

过滤非a-zA-z开头的

#  grep '^[^a-zA-Z]' passwd

blob.png

grep(下)

过滤包含r或者o的任意的一个字符

# grep 'r.o' test.txt

*表示*号前面的字符循环多次匹配,可以0次循环

#  grep 'oo*' passwd

匹配所有字符

# grep '.*' test.txt

匹配一个范围,特殊符号记得要脱衣

# grep 'o\{2\}' /etc/passwd

匹配一个范围,特殊符号记得要脱衣,其中grep -E 跟egrep是一样的

# grep -E 'o{2}' /etc/passwdegrep 'o{2}' /etc/passwd

过滤表示一次或者多次,+号从1开始

# egrep 'o+' /etc/passwd

匹配表示?前面的字符0次或者1次重复出现

# egrep 'oo?' /etc/passwd

匹配root或者nologin

# egrep 'root|nologin' /etc/passwd

匹配oo两次那么就是4个o

egrep '(oo){2}' /etc/passwd

把一个目录下,过滤所有*.php文档中含有eval的行

grep -r --include="*.php" 'eval' /data/