基于linux下的shell ~~~~~awk报告生成器

######awk报告生成器#####

注意:它无所谓空格多长,无论空格多长都默认为1个空格

awk处理机制:

根据模式一次从文件中抽取一行文本,对这行文本进行切片(默认使用空白字符作为分隔符)

 编写脚本test:

     this     is     a     file

      $1     $2   $3    $4

测试:

awk '{print $1,$2}' test ##显示两个字段

awk -F ":" '{print $1,$3}' /etc/passwd ##指定分隔符

 

#awk常用变量

awk '{print FILENAME,NR}' /etc/passwd ##输出文件名,和当前操作的行号

cat /etc/passwd | wc -l   //查看/etc/passwd 一个有多少行

 

awk -F: '{print NR,NF}' /etc/passwd ##输出每次处理的行号,以及当前以":"为分隔符的字段个数

总结:awk '{print "第NR行","有NF列"}' /etc/passwd

 

BEGIN  END 

{}:逐行处理

BEGIN{}:读入第一行文本之前执行的语句,一般用来初始化操作

END{}:处理完最后以行文本后执行,一般用来处理输出结果

awk 'BEGIN { a=34;print a+10 }'

awk -F: 'BEGIN{print "REDHAT"} {print NR;print } END {print "WESTOS"}' passwd ##文件开头加REDHAT,末尾加WESTOS,打印行号和内容

测试:

awk -F: '/bash$/{print}' /etc/passwd ##输出以bash结尾的

awk -F: 'NR==3 {print}' /etc/passwd   ##显示第三行

awk -F: 'NR % 2 == 0 {print}' /etc/passwd ##偶数行

awk -F: 'NR >=3 && NR <=5 {print }' /etc/passwd  //输出第三行到第五行

awk 'BEGIN{i=0}{i+=NF}END{print i}' linux.txt ##统计文本总字段个数

练习题:列出uid小于2的用户,只要输出用户名和uid

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/yinzhen_boke_0321/article/details/85251326