[英]How to count the number of data with specific conditions from columns using awk?
[英]How to count number of hotels in every county using awk?
我有一個包含列的數據集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}'
但如何為每個國家做到這一點?
用 awk 解析 CSV 通常不是一個好主意。 例如,如果您的某些字段包含逗號,它將無法按預期工作。 無論如何,關聯數組對於此類任務通常很方便:
awk -F, '{num[$7]++} END{for(country in num) print country, num[country]}' /home/data/hotels.csv
注意: cat file | awk ...
cat file | awk ...
沒用。 只需將文件傳遞給 awk。
如果您將列作為第一行,則可以從第二行開始處理數據,使用國家/地區名稱作為數組鍵並在遇到相同鍵時增加值。
awk -F, 'NR > 1 {
ary[$7]++
}
END {
for(item in ary) print item, ary[item]
}
' /home/data/hotels.csv
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.