IT技术博客大学习 共学习 共进步

AWK介绍

技术 总结 记录 生活 工作 2010-10-28 07:29:14 浏览 6,581 次

想成为架构师吗,先学习AWK。想提高效率吗,先学习AWK。

1:模式和操作
awk脚本由模式和操作组成,模式包括正则表达式,关系表达式,模式匹配表达式,模式,BEGIN,END.
操作由命令,函数,表达式组成,之间由分号分隔,并位于大括号内,主要包括变量和数组赋值,输出命令,内置函数.

2:环境变量
比较有用的环境变量有$0,NF,NR,RS.有效的改变环境变量的值可以由很多作用

3:记录和域
很关键的二个名称,记录每一个以换行符结束的行称为记录.

4:变量
awk中,变量不需要定义就可以直接使用,变量可以赋值和修改.

5:BEGIN和END
BEGIN模块后紧跟着动作块,这个动作块在awk处理任何输入文件之前执行.所以它可以在没有任何输入的情况下进行测试.它通常用来改变内建变量的值,如OFS,RS和FS等.
END模块不匹配任何的输入文件,但是执行动作块中的所有动作,它在整个输入文件处理完成后执行.

6:重定向和管道
awk可使用shell的重定向符进行重定向输出
awk '$1 = 100 {print $1 > "output_file" }' ./t.log
getline表示从标准输入,管道或者当前正在处理文件之外的其他输入文件获得输入,它负责从输入获得下一行的内容
awk 'BEGIN{while( "ls" | getline) print}'

7:数组和内建函数
awk '/^tom/{name[NR]=$1}; END{for(i in name){print name[i]}}' ./t.log

比较有用的脚步

awk   -F"_" 'BEGIN{RS="[|\n]"} { if ($1=="db")print $2","$3}' ./10.54.37.144_20101028_part2.log | awk -F"," '{if ($2>1) n+=1}END{print n/NR}'

zcat */* | awk -F ' || ' '{print $3}' | awk -F '.' '{++state[$1]} END {for(key in state) print key,"\t",state[key]}'

awk -F';' 'BEGIN{while("cat log.log "| getline d) v[num++]= d }{ for (i=0;i<num;i++) if (v[i]==$1) print $1}' ./10.54.37.144_20101028_part2.log


建议继续学习

  1. Linux命令行里的“瑞士军刀” (阅读 11,443)
  2. AWK 简明教程 (阅读 9,143)
  3. awk命令,实现文件的合并与拆分 (阅读 6,961)
  4. 更快的IP库查找方法以及AWK中的二分查找 (阅读 6,401)
  5. awk 实例之二维数组 (阅读 5,923)
  6. 操作大文本,awk vs vim (阅读 4,961)
  7. SED命令行脚本快速参考,AWK命令行脚本快速参考,perl命令行脚本快速参考 (阅读 4,743)
  8. 从shell中向awk传递变量实例 (阅读 4,481)
  9. bash shell - sed及awk文本捕获及替换 (阅读 4,202)
  10. bash shell - sed, awk文本捕获及替换 (阅读 4,164)