我正在使用以下脚本读取一些数字并计算它们的平均值。然而,浮点计算似乎不能像这样执行。
hours=0
#echo "n" >> user-list.txt
while IFS=, read -r col1 col2 col3 col4 col5 col6 col7 || [[ -n $col1 ]]
do
((hours = hours + col5))
#echo "$col1, $col2"
done < <(tail -n+2 user-list.txt)
((hours = hours/10))
echo "$hours" > wednesday.txt
如何在此脚本中执行浮点计算?
以下是输入文件的示例:
Computer ID,User ID,M,T,W,T,F
Computer1,User3,5,7,3,5,2
Computer2,User5,8,8,8,8,8
Computer3,User4,0,8,0,8,4
Computer4,User1,5,4,5,5,8
TIA-
此awk
脚本将处理数据并计算结果。
awk -F, 'FNR>1 { hours += $5 } END { print hours/10; }' user-list.txt
当然,您可以将输出重定向到一个文件。
awk -F, 'FNR>1 { hours += $5 } END { print hours/10; }' user-list.txt > wednesday.txt
说明:
-F,
指定,
作为字段分隔符FNR>1
条件跳过每个文件的第一行(列名({ hours += $5 }
求和第五列END { print hours/10; }
在最后打印结果
该脚本允许处理多个文件,如下所示:
awk -F, 'FNR>1 { hours += $5 } END { print hours/10; }' file1 file2 file3 [...] > outputfile
awk -F, 'NR > 1 { hours+=$5 } END { printf "%.2f",hours/10 }' <user-list.txt > wednesday.txt
使用awk,将逗号设置为字段分隔符,然后将user-list.txt重定向到awk中。对于每一行,将hours设置为hours加上第五个逗号分隔的值。最后,将小时数除以10,打印到小数点后2位。将输出重定向回wednesday.txt。