用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}'