三剑客之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
是一行一行地处理文本文件,运行流程是:
- 先运行
BEGIN
后的{Action}
,相当于表头 - 再运行
{Action}
中的文件处理主体命令 - 最后运行
END
后的{Action}
中的命令
有几个经常用到的awk
常量:NF
是当前行的field
字段数;NR
是正在处理的当前行数。
注意到是转置,假如原始文本有m
行n
列(字段),那么转置后的文本应该有n
行m
列,即原始文本的每个字段都对应新文本的一行。我们可以用数组res
来储存新文本,将新文本的每一行存为数组res
的一个元素。
在END
之前我们遍历file.txt
的每一行,并做一个判断:在第一行时,每碰到一个字段就将其按顺序放在res
数组中;从第二行开始起,每碰到一个字段就将其追加到对应元素的末尾(中间添加一个空格)。
文本处理完了,最后需要输出。在END
后遍历数组,输出每一行。注意printf
不会自动换行,而print
会自动换行。