awk实例小应用

时间:2021-09-11 16:07:16

 以/etc/passwd为例:

       以竖行的方式输出符合nobody用户的所有信息,并显示行号  
  
 
 
  1. [root@www ~]# awk -F ":" '$1 ~/^nobody/  { j=1; for (i = 1; i<=NF; i++) print j++ " " $i}' /etc/passwd 
  2. 1 nobody 
  3. 2 x 
  4. 3 99 
  5. 4 99 
  6. 5 Nobody 
  7. 6 / 
  8. 7 /sbin/nologin 
                    显示所有的uid和gid一样的用户名  
  
 
 
  1. [root@www ~]# awk -F : '{if ($3!=$4) print $1}' /etc/passwd 
  2. adm 
  3. lp 
  4. sync 
  5. shutdown 
  6. halt 
  7. mail 
  8. news 
  9. uucp 
  10. operator 
  11. games 
  12. gopher 
  13. ftp 
  14. avahi-autoipd 
                         计算某一列数据的平均值  
  
 
 
  1. [root@www ~]# cat f 
  2. 0.368 
  3. 1.13 
  4. 0.527 
  5. 0.377 
  6. 1.34 
  7. 0.387 
  8. 1.40 
  9. 0.566 
  10. 0.951 
  11. 0.513 
  12. 0.543 
  13. [root@www ~]# awk '{sum+=$1} END {print sum/NR}' f 
  14. 0.736545 
  统计总分数(使用数组对不同的人进行统计)  文件内容形如: JohnA50 JohnB77 JimA44 JimB88 KateA67 tomA33 tomB44
  
 
 
  1. [root@www ~]# awk '{a[$1]+=$3} END {for(x in a) print x " " a[x]}' d 
  2. tom 77 
  3. Kate 67 
  4. John 127 
  5. Jim 132 

本文出自 “明日香” 博客,请务必保留此出处http://leezqang.blog.51cto.com/1525874/878239