一种使用 gawk来统计字母个数的方式是,遍历每行输入中的每一个字符,然后对 “a” 到 “z” 之间的每个字母进行计数。substr函数会返回一个给定长度的子串,它可以只包含一个字符,也可以是更长的字符串。比如,下面的示例代码能够取到输入中的每一个字符c:
{ len = length($0); for (i = 1; i
如果使用一个全局字符串变量 LETTERS来存储字母表,我就可以借助index函数来找到某个字符在字母表中的位置。我将扩展gawk代码示例,让它在输入数据中只取范围在 “a” 到 “z” 的字母:
BEGIN { LETTERS = "abcdefghijklmnopqrstuvwxyz" } { len = length($0); for (i = 1; i
需要注意的是,index函数将返回字母在LETTERS字符串中首次出现的位置,第一个位置返回 1,如果没有找到则返回 0。如果我有一个大小为 26 的数组,我就可以利用这个数组来统计每个字母出现的次数。我将在下面的示例代码中添加这个功能,每当一个字母出现在输入中,我就让它对应的数组元素值增加 1(使用++):
BEGIN { LETTERS = "abcdefghijklmnopqrstuvwxyz" } { len = length($0); for (i = 1; i