awk  样式扫描处理工具,管用。
我收集了一些比较简单实用的,做了笔记,分享给大家,一个字一个字打出来的。
觉得好,就笑一个吧

awk '{print}' /etc/passwd :打印/etc/passwd所有内容
awk -F : '{print $1}' /etc/passwd  :以 ":" 为分隔符 ,打印/etc/passwd第一字段,也就是用户名
awk -F : '{print $1 " " $2}' /etc/passwd  :同上功能,打出第1,第二字段。  中间加个空格输出。
awk 'BEGIN{FS=":";OFS="\t";ORS="\n"}{print $1,$2}' /etc/passwd
***  FS:字段分隔符
     OFS:输出字段分隔符
     ORS:输出记录分隔符
以上命令为以 : 为分隔符,每个字段用\t隔开,输出一行后\n (换行), 输出第1,2字段。中间用,隔开
awk '{print NR}' /etc/passwd :读取/etc/passwd的每一行行号  (NR至今的读取记录数)
awk 'END{print NR}' /etc/passwd  : 加了个END,读最后一个读取记录数的数字! 输出结果:29 表示29个用户
awk '/root/' /etc/passwd :输出 /etc/passwd里包含  root 这个字眼的 记录!打印出来 。'/ /'里表示的是符合字符
awk '{if($1~/root/) print $0}' /etc/passwd : 如果第一个字段里有符合root字眼的,打印当前行,$0表示当前行(当前记录)
awk '/^[Rr]oot/' /etc/passwd   :   '//'里表示匹配字符  ^表示匹配第一个字母 [Rr]表示这个字母是R或者r也可以
                                     所以上面的语句表示:第一个字母符合Root或者root就打印改记录条
awk '$2~/^..u/' /etc/passwd : ~/表示匹配,这里表示第2个字段第3个字母为u的话,就打印出该行
awk '/(lin|root)/' /etc/passwd   :记录里有匹配 lin或者root的!就打印出来

echo ababab | awk 'gsub(/a/,"c")' : 输出  ababab  再把输出结果交给awk处理,最后吧 a换成了c .输出为 cbcbcb
awk '{if($4!~"301|302") print $0}' filename :要是 第4个字段, 不匹配  301或者 302!就打印出该记录  !~表示不匹配,~表示匹配