grep
o:只打印匹配出来的字符
n:显示行号
v:取反
l:匹配成功,打印文件
c:统计匹配到的字符的数量,但是统计的是行数,而不是匹配的字符个数
A:匹配行后几行
B:匹配行前几行
C:匹配行前后几行,  如    -C 2   与   -2
i:忽略大小写
q:静默执行,一般在测试时,取返回值用
r/R:对一个目录下的所有文件进行搜索
--color:用特殊颜色标示匹配到的关键字
H: 列出匹配到关键字的文件路径

egrep:拓展正则搜索
egrep = grep -E



# cat grep.txt
ggle
gogle
google
gooogle
gagle
gaagle
gaaagle
abcgef

abcdef

操作如下:
grep 'g.g' grep.txt --只要两个g字母中间有一个任意字符就可以
grep 'g*g' grep.txt --只要有一个g字母就可以。等同于grep g grep.txt
grep 'go*g' grep.txt   --只要两个g字母中间有零个o或多个o就可以
grep 'g.*g' grep.txt --只要两个g字母中间有零个或任意个字符就可以
grep 'go.*g' grep.txt --只要go与g字母中间有零个或任意个字符就可以

/etc/passwd
grep ^...t /etc/passwd --查找每行里第四个字符为t的行
grep o.....$ /etc/passwd --查找每行里倒数第六个字符为o的行
grep s..n /etc/passwd --查找每行里有s和n字符,并且中间有两个字符的行
grep x:4: /etc/passwd --查找uid为4的行(只使用grep和正则表达式,不使用cut或awk的截取)
grep .*:.:4:.*:.*:.*:.* /etc/passwd --查找uid里是4的行
grep .*:.:.*4.*:.*:.*:.*:.* /etc/passwd --查找uid里包括4的行
grep .*:.*:.*:.*::.*:.* /etc/passwd --查找/etc/passwd里注释列为空的行
grep -v .*:.*:.*:.*::.*:.* /etc/passwd --查找/etc/passwd里注释列不为空的行
grep .*:.*:.*:.*:..*:.*:.* /etc/passwd
grep .*:[!x].*:.*:.*:.*:.*:.*:.*:.* /etc/shadow --查找不能在登录界面用密码正常登录的用户
grep root /etc/passwd -- 过滤关键字
grep '^root' /etc/passwd   -- 以 root 开头的行
grep 'bash$' /etc/passwd   -- 以 bash 结尾的行
grep '^$' /etc/passwd   -- 查找空行
grep '^[ru]' /etc/passwd   -- r 或  u
grep '[0-9]' /etc/passwd   -- 查找数字
grep '^[^abc]' /etc/passwd   -- 取反,非 a 非 b 非 c 开头
grep '\<root\>' /etc/passwd   --  \< 取单词的头,\> 取单词的尾
grep -E '^root|^zhang' /etc/passwd  --color -- 拓展正则 ,  -E,匹配以root 或 zhang 开头
grep -n root /etc/passwd   -- 带行号过滤
grep -oE '(([0-9]{1,3}\.){3}[--9]{1,3})' /var/log/secure --在文本过滤IP地址