在其基本形式中,我給出了一個文本文件, 2012年總統大選,我需要在Unix中編寫一行shell腳本來確定哪個候選人獲勝。該文件有各種字段,其中一個是CandidateName,另一個是TotalVotes。文件中的每條記錄都是來自州內一個分區的結果,因此任何給定的CandidateName都有很多記錄,所以我希望能夠根據CandidateName對數據進行排序,然後最終將TotalVotes每個唯一的CandidateName(所以總和開始於唯一的CandidateName並且在下一個唯一的CandidateName之前結束)。如何編寫一個Unix Shell來對每個唯一列求一行的值(例如,如何計算每個不同候選人的總票數)
0
A
回答
1
無需使用awk
及其關聯數組進行排序。爲了方便起見,數據文件格式可以是:
precinct1:candidate name1:732
precinct1:candidate2 name:1435
precinct2:candidate name1:9920
precinct2:candidate2 name:1238
因此,你需要根據現場2 :
作爲分隔符創建場3的總和。
awk -F: '{sum[$2] += $3} END { for (name in sum) { print name " = " sum[name] } }' data.file
awk
的某些版本可以在內部進行排序;別人不能。我會使用的排序程序來處理的結果:
sort -t= -k2nb
(字段分隔符是=
標誌;排序是區域2,它是一個數字字段,可能具有前導空白)。
0
不太一條線,而是將工作
$ cat votes.txt
Colorado Obama 50
Colorado Romney 20
Colorado Gingrich 30
Florida Obama 60
Florida Romney 20
Florida Gingrich 30
腳本
while read loc can num
do
if ! [ ${!can} ]
then
cans+=($can)
fi
(($can += num))
done < votes.txt
for can in ${cans[*]}
do
echo $can ${!can}
done
輸出
Obama 110
Romney 40
Gingrich 60
相關問題
- 1. 如何獲取列中每個不同值的唯一一行?
- 2. 如何計算每個另一列值一行的不同出現的次數
- 3. 計算每個唯一行值
- 4. Unix Shell:總結值,每行一個,但跳過每第n行
- 5. 如何寫一個sql查詢來總計每一天?
- 6. 選擇一列的每個唯一值
- 7. 如何統計同一個表中的每個人的行爲?
- 8. 如何選擇每個唯一值中的一個?
- 9. 如何在Excel中計算每個類別的唯一值
- 10. 總和行每個唯一的值
- 11. 如何獲得另一列中每個不同值的總和?
- 12. 如何獲取MySQL中每個唯一列值的x行數?
- 13. 如何計算每行特定值的唯一出現次數?
- 14. MySQL:如何返回每個唯一編號的最近一行
- 15. 扭曲。如何爲每個請求的日誌寫一個唯一的前綴
- 16. 如何編寫一個計算python總點數的函數?
- 17. 尋找一種方法來總計我的每一個發票
- 18. 如何爲stats.binned_statistic編寫一個函數來計算每個bin中值的數量,而不重複?
- 19. Java-給對象的每個實例一個唯一編號
- 20. 如何在每個SQLite行中插入一個唯一的ID?
- 21. 如何包括每個實例的唯一ID在未來
- 22. 如何爲每個不同的元素使用一個數組的每個值
- 23. SQL - 如何選擇每個唯一值前3行返回
- 24. 如何計算與R中另一列中每個值對應的列中每個值的頻率?
- 25. 如何爲多個列的每個唯一組合選擇單個行?
- 26. 如何爲每個課程實例分配一個唯一的序列號?
- 27. 如何返回其他列中每個值具有唯一計數的列
- 28. 使用動態值計算數據集中每個唯一行的總和
- 29. 計劃,讓每一個第5和第7的每個對象的唯一列表(列表)從一個數組
- 30. C語言:我如何編寫一個函數來打印每行一行?
能否請您發表您的輸入文件的摘錄,什麼期望結果是? – cnicutar