1. awk  命令胡使用

    awk是一款功能强大的文字处理软件,可以以列为单位,来处理并显示出我们需要的信息,其用法如下:

    1)awk option  'parttern { cmd }......'

    awk 常用的选项是-F 指定 列的分隔符

    awk - F : 'partern {action}' 就是每行以:作为分隔符,第一列为$1,$2,.....其中$0代表整行。awk中有一个内置的变量NF,指当前行的列的个数。通常用$NF表示当前行的最后一列。

     awk -F : '{print $1,$NF}' /etc/passwd 输出/etc/passwd的第一列和最后一列。

    2)awk parttern的类型

      BEGIN 是awk内置的parttern,在awk处理各行之前,执行BEGIN后面的cmd.

      END 是awk内置的parttern,在awk处理各行之后,执行END后面的cmd.

     awk -F : 'BEGIN {printf "%-10s%-10s\n","first","last"}{printf "%-10s%-10s\n",$1,$NF}' /etc/passwd  输出每一行的第一列和第七列,在输出之前,打印一个信息提示行。

      判断表达式

       awk -F : '$3 >=500 {print $1,$NF}' /etc/passwd 输出/etc/passwd中UID大于500的用户名及SHELL。

       正则表示式

        awk -F : ' $NF ~ /bash$/ {print $1,$NF}' /etc/passwd

    3)awk还支持自定义变量,支持数组,for,while ,switch case等语句。

        awk -F: -v count=0 '$NF ~ /bash$/{count++;print $1,$NF} END{print "total",count}' /etc/passwd 输出 /etc/passwd中,shell是bash的用户名及shell,最后统计个数。

    awk -F: '$NF ~ /bash$/{count++;print $1,$NF} END{print "total",count}' /etc/passwd 也可以实现上述功能,awk里面的变量可以在使用的时候再定义,其默认值为0。

     awk -F : 'BEGIN {printf "%-10s%-10s\n","shelltype","count"}{shell[$NF]++}END{for (i in shell) print i,shell[i]}' /etc/passwd 统计/etc/passwd中,每种不同类型的SHELL的出现次数。