我有多个结构文件
1:
57 string1 string2 0 200 0 0 11
50 string6 string7 0 656 676 12 0
2:
11 string3 string4 2 45 86 0 0
57 string1 string2 0 343 0 0 11
50 string6 string7 0 565 676 12 0
我需要为所有文件中所有数据行的第一个字段相同的所有行计算字段编号 5 中所有数字的总和。
例如,对于以 50 开头的行,它将是 656+565 = 1221 的总和。对于数字 57,分别为 343+200 = 543。之后,我想以格式显示一个具有最大总和的字符串(例如,对于 50):“50 string1 string2 1221”。
我只能使用这些命令:printf、echo、wc、tail、head、grep、sort、uniq、cut、tee、tr、read,不使用临时文件。
我制作了一个脚本,但它计算出错误的值:在文件输入中,它只是计算文件中所有行的字段总和,我需要如上所述.. 怎么做(或者更确切地说,如何修复它让它工作)?这是脚本:
#! /bin/bash
function findMax {
for file in $* ; do
cat $file | sort -bd | calcSums
done
}
function calcSumForSimilar {
local sum_for_similar=0
while read -a line ; do
let sum_for_similar+=${line[4]}
done
echo $sum_for_similar
}
function calcSums {
while read -a line; do
sum=$(cat "${line[@]}" | grep ${line[0]} | calcSumForSimilar)
done
echo ${line[0]} ${line[1]} ${line[2]} $sum
}
findMax $*
谢谢!