AWK使用总结

AWK

简介:

 

Awk是一种便于使用且表达能力强的程序设计语言,可应用于各种计算和数据处理任务。本章是个入门指南,让你能够尽快地开始编写你自己的程序。第二章将描述整个语言,而剩下的章节将向你展示如何使用Awk来解决许多不同方面的问题。纵观全书,我们尽量选择了一些对你有用、有趣并且有指导意义的实例。

参考资料:

http://awk.readthedocs.io/en/latest/ 

学习总结:

【基本格式】

awk   '操作'    文件名

 【常用系统变量及函数】

NF:字段变量,在一行中,将字段分成若干个字段,$1 ~ $NF  ($0 代表一整行 "this is awk" $0 = "this is awk",$1 = "this",$2 = "is",$NF=$3="awk" )

NR:统计行号,类似于wc -l

length():返回字段的长度  length($2) 返回第二个字段的字符串长度

, : 逗号表示\t 表示空格,{print $1,$2}会输出相应的答案$1 $2,像{print $1 $2}则是不可以的。

【基本操作】

统计日志文件中满足某条件的日志行数 :awk '$1==1 {emp = emp + 1} END {print emp} '  logfile 

求数据文件中平均值(利用NR)或sum值: awk ' {sum = sum + $1} END {print sum / NR}'  datafile    NR是变值,比如awk处理第一行NR就是1,处理第n行NR就是n

求数据文件中的某一项的最小(大)值 :awk '$3 < min {min=$3}END{print min}'  datafile

控制&循环语句:if while for效仿C语言,它们仅可以在动作中使用。

数组:数据给予了awk超强的能力,结合各种循环判断,结合NR使用更佳。例子,输出数据文件最后十行的第二个字段:awk '{ attr[NR]=$0 }END{ for(i=NR;i>=NR-10;i–){ print attr[i] } }'   datafile 

【模式】

  • BEGIN{ 语句 }

    什么鬼没用过,好像有一次记混了还给用错了,禁奥义(在读取任何输入前执行一次语句)

  • END{ 语句 }

    读取所有输入之后执行一次语句

    eg:awk '$1==0{sum=sum+1}END{print sum}' datafile  在数据文件中第一个字段为0的总数。

  • 表达式{ 语句 }

    对于表达式为真的行,执行的语句

    eg:同END

  • /正则表达式/{ 语句 }

    如果输入行包含字符串与正则表达式相匹配,则执行的语句

  • ( 组合模式 ){ 语句 }

    一个 组合模式 通过与(&&),或(||)以及括弧来组合多个表达式;对于组合模式为真的每个输入行,执行语句

    eg:awk '($1==1||$1==0){sum=sum+1}END{print sum}' datafile 在数据文件中第一个字段为0或者1的总数。

  • 模式1,模式2 { 语句 }

    同时匹配多个模式然后执行语句,模式指以上五种模式。

你可能感兴趣的:(Linux)