Linux命令之awk命令使用介绍 |
本文标签:Linux命令,awk命令 介 绍:awk主要处理每一行的字段内的数据,默认分隔符:任意数量的空格或者任意数量的tab 用 法: awk 模式 操作 file ... 1、awk /正则表达式/ {print ...} file ... 正则表达式相当于egrep中的正则 注意:模式或者操作都是可选的,若省略操作(比如省略{print $1}),则正则模式匹配的整行 下面两种方式输出结果一样
$ cat file_a pa:11:a sa:32:c app:5:b stort:1:d pear:4:aa hello:3:f $ egrep ^a file_a app:5:b $ awk /^a/ {print ___FCKpd___0} file_a app:5:b 2、awk 条件模式 操作 file ... awk -F: $2=="" /etc/passwd 打印以冒号分隔符的第二个字段可空的行 等价于模式: $2 ' /^$/ 第二个字段匹配为空 $2 !' /./ ------------>这里的!'表示不匹配 length($2)==0 !($2 ' /./)
其他的模式: NF == 10 10列 NF % 2 == 0 列数为偶数 length($0) > 20 例如: awk -F: length($0) > 30 {print substr($0, 1, 30)} file 若行过长,则取这一行的前30个字符 3、awk的特殊用法,BEGIN和END两者可以连用,也可以单独使用 BEGIN在读入第一行之前就被执行,可以使用BEGIN模式初始化变量,打印标题头或通过指定变量FS设置字段分隔符 。 END动作在处理完最后一行后执行 。 例如: awk BEGIN {FS=":"} $2 != "vobile" {print $0} END {print NR} file 注意: awk BEGIN {FS=":"} $2 != "vobile" END {print NR} file 这样是不对的 ,END前和后必须要有操作 4、awk中的算术变量和运算 awk中的真正的实力是对输入数据进行计算的能力,可以很容易的实现计数、累计求和、求平均数 。最常用的是求各数字列的总和 。 例如:求第二列之和
$ cat file_a pa:11:a sa:32:c app:5:b stort:1:d pear:4:aa hello:3:f $ awk BEGIN {FS=":"} {s = s + $2} END {print s} file_a 56 |