【shell编程】 awk 常见练习题整理

来源:互联网 发布:sql 创建触发器 编辑:程序博客网 时间:2024/05/18 00:37
【1】 打印UID在30-40之间的用户名                       
     awk -F : '{ for(i=30;i<=40;++i) if (i==$3) print $1,$3}' /etc/passwd

【2】打印第5-10行,输出用户名和行号
  
     awk -F : '{if(NR>=5&&NR<=10) print NR,$1}' /etc/passwd 

【3】打印奇数行
   
     awk -F : '{if(NR%2!=0) print $0}' /etc/passwd | head -5

【4】 打印偶数行
  
awk -F : '{if(NR%2==0) print $0}' /etc/passwd | head -5

【5】 打印UID不等于GID的用户名
 
 awk -F : '{if($1!=$5) print $1,$5}' /etc/passwd 

【6】 打印没有指定shell的用户名
 
 awk -F : '{if($7=="") print $1}' /etc/passwd 

7 打印1-1000以内能被7整除的数和包含7的数 
 
 awk -f test7.awk  1 BEGIN{  2   for ( i=1;i<=1000; i++){  3      if(i%7==0)  printf ("\033[1;33m%d\033[0m\t",i)  4      else if (i%10==7)  printf ("%d\t",i)  5      else if ((i/10)%10==7) printf ("%d\t",i)  6      else if ((i/100)%10==7)  printf ("%d\t",i)  7   8 }  9  print "" 10 }  1 BEGIN{  2   for( i=1; i<=1000;i++)  3    if (i~/7/ || i%7==0) printf i "\t"  4 }