Grep

grep 
  -i :不区分大小写
  --color
  -v:排除指定关键字
  -o:只显示被匹配的字符串
  -E 扩展的正是表达式 =egerp
  -A:后n行
  -B:前n行
  -C:上下n行

[root@Jameszhan testcp]# grep -o 'root' /etc/passwd --color
root
root
root
root

元字符:
.:匹配任意单个字符
[]:匹配指定范围内的单个字符
[^]:匹配指定范围外的任意单个字符

匹配次数:
*:匹配前面的字符任意次
.*:匹配任意字符串
\? 匹配前面的字符1次或0次
\{m,n\}:匹配前面字符m-n次


位置锚地
^:锚定行首
\<\b:锚定词首 后面的任意字符必须作为单词首部出现 
\<root

$:锚定行尾
\>\b:锚定词尾 前面的任意字符作为单词出现在尾部
root\>

abc 作为内容出现和扩展正则表达式雷同
支持后向引用


################################################


扩展的正则表达式:REGular expression regexp

元字符:
.:匹配任意单个字符
[]:匹配指定范围内的单个字符
[^]:匹配指定范围外的任意单个字符
匹配次数:
*:匹配前面的字符任意次
.*:匹配任意字符
\? 匹配前面的字符1次或0次
+:匹配前面的字符至少1次
{m,n}:匹配前面字符


[root@Jameszhan ~]# cat /tmp/t.txt
it is open no opening


###########

位置锚地
^:锚定行首
比如^8.*则是指以8开头的任意字符串

###########

$:锚定行尾


###########

^$:空白行


###########

\<\b:锚定词首 后面的任意字符必须作为单词首部出现 
\<root

###########

\>\b:锚定词尾 前面的任意字符作为单词出现在尾部
root\>

###########

(ab)* 分组(一般作为单词出现时用括号扩起来)

[root@Jameszhan ~]# grep '(abc)*'  -E --color /tmp/t.txt
ab
abc
aab
aaac

支持后向引用 \1,\2

[root@Jameszhan ~]# grep -E '(open).*\1' /tmp/t.txt  --color
it is open no opening

###########

|:或or

用整整表达式写出 1-255
\<[1-9]|[1-9][0-9]|1[0-9][0-99]|2[0-4][0-9]|25[0-5]\>

筛选出网卡配置文件内的0-255之间的数字
ifconfig | grep -E '(\<[0-9]|[1-9][0-9]|1[0-9][0-99]|2[0-4][0-9]|25[0-5]\>)' --color

ls | grep -vE '.txt|.php'
排除多项文件

[root@Jameszhan ~]# cat /etc/passwd  | grep 'nologin\>' --color
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
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin