欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

三剑客之awk

程序员文章站 2022-06-15 14:42:50
...

三剑客(awk,sed,grep)

awk是一个报告生成器,它拥有强大的文本格式化的能力。

awk的基本语法是awk [options] 'Pattern{Action}' file

 

从一个最简单的命令作为start,省略[options]Pattern,将Action设置成最简单的print

$ echo abc > test.txt
$ awk '{print}' test.txt
abc

例题:

三剑客之awk 

三剑客之awk

解析

awk是一行一行地处理文本文件,运行流程是:

  1. 先运行BEGIN后的{Action},相当于表头
  2. 再运行{Action}中的文件处理主体命令
  3. 最后运行END后的{Action}中的命令

有几个经常用到的awk常量:NF是当前行的field字段数;NR是正在处理的当前行数。

注意到是转置,假如原始文本有mn列(字段),那么转置后的文本应该有nm列,即原始文本的每个字段都对应新文本的一行。我们可以用数组res来储存新文本,将新文本的每一行存为数组res的一个元素。

END之前我们遍历file.txt的每一行,并做一个判断:在第一行时,每碰到一个字段就将其按顺序放在res数组中;从第二行开始起,每碰到一个字段就将其追加到对应元素的末尾(中间添加一个空格)。

文本处理完了,最后需要输出。在END后遍历数组,输出每一行。注意printf不会自动换行,而print会自动换行。

相关标签: 知识积累