HOME | Links | About | Read

用awk处理文本

Table of Contents

awk作为命令行工具

基本模型

awk是输入驱动的, awk程序由一个现成的主输入循环组成,你可以在这个框架下编写代码。

在shell中运行这行代码,由于没有提供文件名,awk从标准输入读取内容,每读取一行文本,脚本打印一行文字。

awk '{print "a new line"}'

awk也可以从文件读取内容,最后一个参数就是文件名,awk程序会打开它并一行行的读取文件内容。

awk '{print "a new line"} test.txt

除了主输入循环,还有两个特殊的部分――BEGIN和END,分别可以做输入前和输入完成后的处理,这里的输入前和输入后,指的读入任何输入前和所有输入完成后。

记录和字段

每一行输入行作为一条记录,由分隔符(默认为空格和制表符)隔开的单字作为字段,可以很方便的用$加数字来引用字段,所以awk经常被用来过滤字段。 从ls的运行结果中,得到文件大小和文件名

ls -l | awk '{print $5 ", " $9}'

只输出文件大小大于100k的文件(不包括目录)

ls -l | awk '{if ($5 > 100000) print $5 " " $9}'
  • 定义分隔符号

系统变量和操作符(速查表格)

  • 系统变量
  • 算数操作符
  • 赋值操作符
  • 关系操作符
  • 布尔操作符

awk作为一门脚本语言

控制结构

函数

一些小技巧