我的文件包含全球约23,000个城市的以下信息:
人口:国家代码:城市:大陆
20470:ZM:Samfya:Africa
20149:ZM:Sesheke:Africa
18638:ZM:Siavonga:Africa
26459:ZW:Beitbridge:Africa
37423:ZW:Bindura:Africa
699385:ZW:Bulawayo:Africa
47294:ZW:Chegutu:Africa
61739:ZW:Chinhoyi:Africa
18860:ZW:Chipinge:Africa
28205:ZW:Chiredzi:Africa
我想只保留每个国家中包含四个最大城市(按人口)的行。 我想也许我可以按人口排序,然后在第二列中只允许一定数量的重复 - 后一部分是我无法弄清楚的。
我是否可以通过某种方式实现此目的AWK / grep的/ SED /排序?
答案 0 :(得分:1)
这是从过度复杂的解决方案到Vytenis的重写解决方案。
sort -t: -k1rn file | awk -F: 'count[$2]++<5'
699385:ZW:Bulawayo:Africa
61739:ZW:Chinhoyi:Africa
47294:ZW:Chegutu:Africa
37423:ZW:Bindura:Africa
28205:ZW:Chiredzi:Africa
20470:ZM:Samfya:Africa
20149:ZM:Sesheke:Africa
18638:ZM:Siavonga:Africa
答案 1 :(得分:0)
打印排序结果:
sort -t: -k1rn | awk -F: '{count[$2]++; print count[$2]":"$0}' | awk -F: '$1<5' | cut -d: -f 2-