grep '[Aa]aa' filename
#过滤出包含有Aaaa或者aaaa的一行

grep '[A-Z]' filename 
#包含至少一个大写字母的行
grep -w '[tT]est' filename 包含单词和test的行.
#force PATTERN to match only whole words

grep -s 'ken sun' filename 
#找到包含ken sun的行, 但不打印行, 而是用来检查退出状态.
#-s, --no-messages         suppress error messages   相当于静默模式

grep -v aaa filename
#打印不包含aaa的行.

grep -l 'dear cathy' * 
#打印包含dear cathy的文件的文件名清单.

grep -n tom file   
#打印匹配的行并追加行号.

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


#egrep = grep -E 可以使用基本的正则表达外, 还可以用扩展表达式. 注意区别.

egrep '(ab)+' filename 

#包含至少一个ab的行.

egrep 'aaaa+' filename

#包含至少四个a的行

# + 匹配一个或者多个先前的字符, 至少一个先前字符? 匹配0个或者多个先前字符.
egrep 'x[0-9]?' filename 

#包含x或者x后面跟着0个或者多个数字的行.
egrep '(TOM|DAN) SAVAGE' filename 

#包含 TOM SAVAGE 和DAN SAVAGE的行.

#() 字符组, 如: love(able|ers) 匹配loveable或lovers.

egrep '[A-Z]...[0-9]' filename 

#有五个字符, 第一个式大写, 最后一个是数字的行. 


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


awk命令



 awk -F"[@ /t]" '{print $2,$3}' test

#以@,空格,Tab键分割test文件的每一行,并输出第二、第三列。

#-F指定分隔符,划分字段


awk '$2~/^(126|yahoo)/{print $2, $3}' test

#如果改行的第二个字段以"123"或"yahoo"开始,则输出改行的第二、第三列。


awk '$1~/[0-9][0-9]$/{print $1, $3}' test

#如果改行的最后两个字段以数字结束,则输出改行的第一、第三列。


$awk '$2 == "gmail.com"{$1 = "ggg";print}' test

#输出test文件中第二个字段是"gmail.com"的行,并把改行第一列改为"ggg",并不能修改test文件内容


awk '$2 == "gmail.com"{$1 = "ggg"}{print}' test

#输出test文件中所有行,并且如果第二个字段是"gmail.com",把改行第一列改为"ggg",和上边那个的区别:主要就是这个输出所有行上边那个只输出第一个字段


awk '{IGNORECASE=1;if($2 ~/^[a-z]/&& $2~/net$/){print $0}}' test

#打开test文件,忽略字母大小写,如果第二字段以[a-z]开头,并以"net"结尾,则输出该行。