Awk 计算柱的平均长度
我有一个任务,我必须用awk计算一列中每个单词的平均长度Awk 计算柱的平均长度,awk,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 我需要如何更改代码以获得整个列的平均字母作为输出 (非
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
我需要如何更改代码以获得整个列的平均字母作为输出
(非常感谢您的时间和帮助:)
在输出中,我得到了每一行的总长度,但它没有计算平均长度,输出只是表示平均值=0,这不可能,因为之前打印的行都有数字
因为您没有将列的长度添加到sum
。改为这样做:
awk -F'\t' '{
print length($8)
sum += length($8)
}
END {
print "Average =", sum/NR
}' file
在输出中,我得到了每一行的总长度,但它没有计算平均长度,输出只是表示平均值=0,这不可能,因为之前打印的行都有数字
因为您没有将列的长度添加到sum
。改为这样做:
awk -F'\t' '{
print length($8)
sum += length($8)
}
END {
print "Average =", sum/NR
}' file
在
BEGIN
部分初始化sum
变量,并在每次迭代时累积列的长度
我没有您的原始文件,因此我对我的/etc/passwd
文件的第1列做了类似的练习:
awk -F':' 'BEGIN{sum=0} {sum += length($1); print length($1)} END{print "Average = " sum/NR}' /etc/passwd
在
BEGIN
部分初始化sum
变量,并在每次迭代时累积列的长度
我没有您的原始文件,因此我对我的/etc/passwd
文件的第1列做了类似的练习:
awk -F':' 'BEGIN{sum=0} {sum += length($1); print length($1)} END{print "Average = " sum/NR}' /etc/passwd
在哪里向变量sum添加值?我以为sum会自动获取我之前打印的长度值。所以我必须手动给出sum的长度值?如果是,我该怎么做?这是否回答了你的问题?在哪里向变量sum添加值?我以为sum会自动获取我之前打印的长度值。所以我必须手动给出sum的长度值?如果是,我该怎么做?这是否回答了你的问题?如果输入文件为空,则将
sum/NR
更改为(NR?sum/NR:0)
或类似操作以避免被零除错误。如果输入文件为空,则将sum/NR
更改为(NR?sum/NR:0)
或类似操作以避免被零除错误。