IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

AWK介绍

技术 总结 记录 生活 工作 2010-10-28 07:29:14 累计浏览 6,708 次
本机暂存

想成为架构师吗,先学习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. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. vim几个小技巧(批量替换,列编辑) (累计阅读 37,515)
  2. 28个Unix/Linux的命令行神器 (累计阅读 16,789)
  3. perl更新/修改/删除文本文件内容 (累计阅读 10,646)
  4. AWK 简明教程 (累计阅读 9,365)
  5. 面试IT业界顶尖企业所应该知道的10道题(1) (累计阅读 8,525)
  6. 百度日本-四面楚歌 (累计阅读 8,005)
  7. awk命令,实现文件的合并与拆分 (累计阅读 7,062)
  8. 更快的IP库查找方法以及AWK中的二分查找 (累计阅读 6,556)
  9. 正则表达式基础 (累计阅读 6,316)
  10. awk 实例之二维数组 (累计阅读 6,012)