鸟哥私房菜重温6

  1. awk  命令胡使用shell

    awk是一款功能强大的文字处理软件,能够以列为单位,来处理并显示出咱们须要的信息,其用法以下:数组

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

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

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

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

    2)awk parttern的类型it

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

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

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

      判断表达式

       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的出现次数。

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息