首页 > 代码库 > 鸟哥私房菜重温6
鸟哥私房菜重温6
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的出现次数。
鸟哥私房菜重温6