![a6b377bd42470a578d3f9e7be7fd6ec7.png](https://img-blog.csdnimg.cn/img_convert/a6b377bd42470a578d3f9e7be7fd6ec7.png)
awk 是这样一个工具:它可以执行更加复杂的文本处理,将庞大的文本分割成行,逐行读入,同时可以对每行的字符进行切片,并对切片后的独立字符串进行制定的运算、排序或编辑工作。
配合其它的文本处理工具,比如之前讲过的 grep 和 sed,awk 可以对它们输出的结果进行编辑并输出为指定的格式。三者的配合可以帮我们处理很多特定格式的数据,尤其是 bed,gtf 这种每列之间由空格或制表符分割的数据格式,更可以让它们大显身手。之后我会有一篇笔记专门讲三者同时应用的一些例子。
我们在 Linux 上使用的 awk,一般是 awk 的 GNU 版本 gawk。
awk 的工作流程:
首先,awk 的语句块被划分为三部分:BEGIN,BODY 和 END,三者有相同的语法为:
BEGIN/{pattern}/END {awk command} #{pattern} 为 BODY 语法
BEGIN 和 END 均为可选部分,一个简单的 awk 命令可以只由 BODY 部分组成,三者的流程关系可由下图所示: