我有一個包含列的資料集hotels.csv:doc_id、hotel_name、hotel_url、street、city、state、country、zip、class、price、num_reviews、CLEANLINESS、ROOM、SERVICE、LOCATION、VALUE、COMFORT、overall_ratingsource
我想計算每個國家的酒店數量。我怎樣才能使用 awk 做到這一點?我可以計算中國或美國的酒店數量:
cat /home/data/hotels.csv | awk -F, '$7=="China"{n =1} END {print n}'
但如何為每個國家做到這一點?
uj5u.com熱心網友回復:
用 awk 決議 CSV 通常不是一個好主意。例如,如果您的某些欄位包含逗號,它將無法按預期作業。無論如何,關聯陣列對于此類任務通常很方便:
awk -F, '{num[$7] } END{for(country in num) print country, num[country]}' /home/data/hotels.csv
注:cat file | awk ...無用。只需將檔案傳遞給 awk。
uj5u.com熱心網友回復:
如果您將列作為第一行,則可以從第二行開始處理資料,使用國家/地區名稱作為陣列鍵并在遇到相同鍵時遞增值。
awk -F, 'NR > 1 {
ary[$7]
}
END {
for(item in ary) print item, ary[item]
}
' /home/data/hotels.csv
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/341781.html
上一篇:從使用awk的第n列讀取
