簡體   English   中英

如何使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM