统计
一个动作就是一个以新行或者分号分隔的语句序列。
不仅可以使用像 NF 这样的内置变量,还可以创建自己的变量用于计算、存储数据诸如此类的操作。awk中,用户创建的变量不需要声明。
计数
用作数字的awk变量的默认初始值为0,所以不需要初始化 emp 。
求和与平均值
使用内置变量 NR ,它保存着到目前位置读取的行数;在所有输入的结尾它的值就是所读的所有行数。
该程序也有个潜在的错误:在某种不太可能发生的情况下, NR 等于0,那么程序会试图执行零除,从而产生错误信息。
统计
计算所有的C文件,CPP文件和H文件的文件大小总和:
统计各个connection状态的用法:(可以看到一些编程的影子了,注意其中的数组的用法)
统计每个用户的进程的占了多少内存:(注:sum的RSS那一列)
处理文本
awk的优势之一是能像大多数语言处理数字一样方便地处理字符串。awk变量可以保存数字也可以保存字符串。
这个程序中,变量 maxrate 保存着一个数值,而变量 maxemp 则是保存着一个字符串。
字符串连接
可以合并老字符串来创建新字符串。这种操作称为 连接(concatenation)。
awk程序中,连接操作的表现形式是将字符串值一个接一个地写出来。
对于每个输入行,程序的第一个语句先连接三个字符串: names 的前一个值、当前行的第一个字段以及一个空格,然后将得到的字符串赋值给 names 。因此,读取所有的输入行之后, names 就是个字符串,包含所有员工的姓名,每个姓名后面跟着一个空格。用于保存字符串的变量的默认初始值是空字符串(也就是说该字符串包含零个字符),因此这个程序中的 names 不需要显式初始化。
打印最后一个输入行
虽然在 END 动作中 NR 还保留着它的值,但 $0 没有。
是打印最后一个输入行的一种方式。
内置函数
awk提供了内置变量来保存某些频繁使用的数量,比如:字段的数量和输入行的数量。
类似地,也有内置函数用来计算其他有用的数值。除了平方根、对数、随机数诸如此类的算术函数,也有操作文本的函数。其中之一是length ,计算一个字符串中的字符数量。
行、单词以及字符的计数
这个程序使用了 length 、 NF 、以及 NR 来统计输入中行、单词以及字符的数量。为了简便,我们将每个字段看作一个单词。
最后更新于
这有帮助吗?