计算一列的平均长度

时间:2020-06-14 17:05:45

标签: awk

我有一个任务,我必须用awk计算一列中每个单词的平均长度。

awk -F'\t'  '{print length ($8) } END  { print "Average = ",sum/NR}' file

在输出中,我获得了每行的总长度,但不计算平均长度,输出仅显示Average = 0,这不是事实,因为之前的打印行都有数字。

为了更好地理解,我将在此处复制粘贴输出的最后一行:

4
4
3
4
4
2
5
7
6
5
Average =  0

我如何更改代码以获取整列的平均字母作为输出?

非常感谢您的时间和帮助:)

2 个答案:

答案 0 :(得分:2)

在输出中,我获得了每行的总长度,但它不计算平均长度,输出仅显示“ Average = 0”,这不可能,因为之前的打印行具有数字。

因为您没有在sum中添加列的长度。改为这样:

awk -F'\t' '{
  print length($8)
  sum += length($8)
}
END {
  print "Average =", sum/NR
}' file

答案 1 :(得分:0)

sum节中初始化一个BEGIN变量,并在每次迭代时累积一列的长度。

我没有您的原始文件,所以我对/etc/passwd文件的第一列做了类似的练习:

awk -F':' 'BEGIN{sum=0} {sum += length($1); print length($1)} END{print "Average = " sum/NR}' /etc/passwd