awk排序作业
输入:给定一个hotelinfo文件,文件格式如下:
shanghai_city_7208 上海全季酒店淮海路店
shanghai_city_14744 锦江之星上海金山城市沙滩店
jinan_2794 章丘市大众旅馆
carmel_ca_5 Carmel River Inn
格式说明:
1. 一共两列,之间使用tab分隔
2. 第一列是酒店代号,第二列是酒店名称
3. 以shanghai_city_7208为例,前面的shanghai_city代表城市
要求如下:
1. 输出一个文件,和hotelinfo格式一样,但是按照酒店代号进行降序排序
2. 输出一个文件,两列,第一列是城市代号,第二列是这个城市下的酒店数,但是按照酒店数进行降序排序
文件如下:
hotelinfo.txt
1.先表示我看错题目了,我以为是按照第一列的最后的数字排序,瞬间复杂度增加,于是我写了一段蛋疼的awk程序。
首先对文本进行排序处理,awk程序为hotelsort.awk
BEGIN{FS="_";ORS="";content=""}
#将原来的文件按照“_”切分,确保酒店的数字代码在空格的第二列
{for(i=;i<(NF-);i++) content=content""$i"_";content=content""$(NF-)" "$NF"\n"}
#用sort命令对酒店代码排序
END{printf("%s", content) | "sort -rn -k 2 > hotelsorted.txt"}
执行
awk -f hotelsort.awk hotelinfo.txt
此时hotelsorted.txt如下
falling_waters_wv Holiday Inn Express MARTINSBURG-NORTH
fairlee_vt Silver Maple Lodge & Cottages
etroubles_ita Hotel Beau Sejour
escanaba_mi Comfort Suites Escanaba
elk_river_mn Country Inn & Suites By Carlson Elk River
eckelsheim_ger Hotel Klosterhof Eckelsheim
dundalk_il 邓多克皇冠假日酒店
delwara_ind Devi Garh
deidesheim_ger Steigenberger Hotel Deidesheim
colton_ca Holiday Inn Express Colton
chita Arkadia
burbank_ca Burbank-Media Center
最后格式化一下这个文件
awk '{print $1"_"$2" "$3}' hotelsorted.txt > hotelsortedformat.txt
得到最后结果
fancy_gap_va_1 Days
falling_waters_wv_1 Holiday
fairlee_vt_1 Silver
etroubles_ita_1 Hotel
escanaba_mi_1 Comfort
elk_river_mn_1 Country
eckelsheim_ger_1 Hotel
dundalk_il_1 邓多克皇冠假日酒店
delwara_ind_1 Devi
deidesheim_ger_1 Steigenberger
colton_ca_1 Holiday
chita_1 Arkadia
burbank_ca_1 Burbank-Media
收工
2. 跟第一题差不多,写个awk hotelsum.awk
BEGIN{FS="_"}
#跟第一题类似,用数组统计个数
{citycode="";for(i=;i<(NF-);i++) citycode=citycode""$i"_";if(NF>)citycode=citycode""$(NF-);sum[citycode]++}
END{for(city in sum) printf("%s\t%4d\n", city, sum[city])}
然后调用一下并排序
awk -f hotelsum.awk hotelinfo.txt | sort -t " " -k -nr
结果:
torquay_vic
tel_aviv
rovinj_cro
torremolinos_esp
the_hague
torquay_uk
paris_city
telford_uk
london_england
los_angeles_usa
fairview_pa
tarragona_esp
beijing_city
tampere_fi
shanghai_city
san_antonio_usa
suzhou_jiangsu
manchester_usa
tossa_de_mar_spa
timmendorfer_strand
terracina_ita
riccione_ita
chongqing_city
yichun_jiangxi
west_memphis_ar
sydney_australia
rovaniemi_fi
dover_de
anderson_sc
ubud_id
taunton_ma
taizhou_zhejiang
robinson_il
okehampton_uk
melbourne_australia
las_vegas
koh_phuket_tha
harrisburg_pa
hamilton_on
gardner_ks
faulkton_sd
beppu_jp
west_columbia_tx
volos_gre
thunder_bay_on
the_entrance_nsw
teignmouth_uk
pittsfield_il
newcastle_united_kingdom
motta_camastra
montvale_nj
montauk_ny
lindos_gre
liberal_ks
lakeside_ca
fort_washington_pa
fillmore_ut
escanaba_mi
birmingham_usa
big_island
zanzibar_tza
yulin_shanxi_02
yulin_guangxi
ypsilanti_mi
yelverton_uk
wigston_uk
wangerooge_ger
vysoke_tatry_sk
trento_ita
the_rocks_nsw
tamworth_uk
stadtoldendorf_ger
somerset_uk
singapore_city
shipley_uk
shenandoah_tx
schmallenberg_ger
santa_elena_gt
san_diego
salado_tx
saint_petersburg
rock_port_mo
riverside_il
richmond_vt
ravenna_italy
prestwick_uk
piste_mex
peoria_az
pensacola_fl
painesville_oh
osnabruck_ger
new_york_city
new_delhi
nelson_bay
montclair_nj
montclair_ca
mexico_city
menlo_park_ca
mattoon_il
mason_wv
madonna_di_campiglio
lone_tree_co
london_England
livingston_nj
lincoln_uk
lakeside_az
krumbach_ger
kota_kinabalu
koh_samui
kernersville_nc
kansas_city
jackson_ms
huizhou_guangdong
huelva_esp
hongkong_city
himeji_jp
hillsborough_nc
hille_ger
hershey_pa
havelock_north_nz
hakodate_jp
grand_rapids
glendale_ca
glen_allen_va
galena_park_tx
fuzhou_fujian
ft_lauderdale
french_lick_in
frazer_pa
fondi_ita
fancy_gap_va
falling_waters_wv
fairport_ny
fairlee_vt
etroubles_ita
elk_river_mn
eckelsheim_ger
dundalk_il
denpasar_bali
delwara_ind
deidesheim_ger
davie_fl
covington_kt
corpus_christi_tx
colton_ca
cefalu_ita
cavriglia_ita
carmel_ca
campinas_bra
burbank_ca
budapest_city
brooklyn_center_mn
bratislava_city
aberdeen_united_kingdom
awk排序作业的更多相关文章
- MapReduce --全排序
MapReduce全排序的方法1: 每个map任务对自己的输入数据进行排序,但是无法做到全局排序,需要将数据传递到reduce,然后通过reduce进行一次总的排序,但是这样做的要求是只能有一个red ...
- 03-Foundation中NSMutableArray遍历、复制和排序
目录: 一.NSString补充 二.NSMutableArray可变数组 三.遍历 四.NSArray支持的新语法 五.数组复制 六.数组的排序 SDK.API.Foundation.Cocoa是什 ...
- Hadoop 数据排序(一)
1.概述 1TB排序通常用于衡量分布式数据处理框架的数据处理能力.Terasort是Hadoop中的的一个排序作业.那么Terasort在Hadoop中是怎样实现的呢?本文主要从算法设计角度分析Ter ...
- 实验楼实验——LINUX基础入门
第一节 Linux简介 一.Linux的历史: 1965 年,Bell 实验室.MIT.GE(通用电气公司)准备开发 Multics 系统,为了同时支持 300 个终端访问主机,但是 1969 年失败 ...
- hadoop MapReduce 笔记
1. MapReduce程序开发步骤 编写map 和 reduce 程序–> 单元测试 -> 编写驱动程序进行验证-> 本地数据集调试 -> 部署到集群运行 用 ...
- 使用DBMS_STATS来收集统计信息【转】
overview Oracle's cost-based optimizer (COB) uses statistics to calculate the selectivity (the fract ...
- Hadoop 中疑问解析
Hadoop 中疑问解析 FAQ问题剖析 一.HDFS 文件备份与数据安全性分析1 HDFS 原理分析1.1 Hdfs master/slave模型 hdfs采用的是master/slave模型,一个 ...
- [hadoop转载]tearsort
1TB排序通常用于衡量分布式数据处理框架的数据处理能力.Terasort是Hadoop中的的一个排序作业,在2008年,Hadoop在1TB排序基准评估中赢得第一名,耗时209秒.那么Tera ...
- ISPF常用命令
[ISPF功能键] PF1: HELP帮助键 PF2: SPLIT键,改变分屏位置 PF3: END键,结束并退回上级菜单 PF4: RETURN键,结束并退回主菜单 PF5: REFIND键,重复最 ...
随机推荐
- Eclipse如何定位到某一个类所在硬盘上的位置
解决方法:安装OpenExplorer_1.5.0.v201108051513.jar插件 将OpenExplorer_1.5.0.v201108051513.jar文件添加到Eclipse所在目录下 ...
- 三年.NET即将转Java,我该何去何从
2014年5月,大三报了某培训班5个月学习.NET 2014年12月-2015年6月,在某软件公司实习,用ASP.NET开发企业级系统 2015年7月-2017年3月,从毕业生到成为该公司的主要开发人 ...
- 【WPF】RenderTransform和LayoutTransform
布局系统 在WPF中,许多绘图任务通过使用变换(transform)可以变得更加简单——变换是通过不加通告地切换形状或元素使用的坐标系统来改变形状或元素绘制方式的对象.在WPF中,变换的一些类大多继承 ...
- ubuntu下让进程在后台运行
(1)输入命令: nohup 你的shell命令 & (2)回车,使终端回到shell命令行: (3)使用第二第三条,完全屏蔽掉信号 用disown -h jobspec来使某个作业忽略HUP ...
- Python上下文管理器(context manager)
上下文管理器(context manager)是Python2.5开始支持的一种语法,用于规定某个对象的使用范围.一旦进入或者离开该使用范围,会有特殊操作被调用 (比如为对象分配或者释放内存).它的语 ...
- 最小生成树---->prim算法的应用 hdu1863
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- 【BZOJ 4027】 4027: [HEOI2015]兔子与樱花 (贪心)
4027: [HEOI2015]兔子与樱花 Description 很久很久之前,森林里住着一群兔子.有一天,兔子们突然决定要去看樱花.兔子们所在森林里的樱花树很特殊.樱花树由n个树枝分叉点组成,编号 ...
- JMS介绍:我对JMS的理解和认识
[ZT]JMS介绍:我对JMS的理解和认识 转自:http://blog.csdn.net/KimmKing/archive/2011/06/30/6577021.aspx,感谢作者KimmKing ...
- Linux sort 排序 去重 统计
先写一个命令: cut -d' ' -f1 ~/.bash_history|sort -d | uniq -c|sort -nr|head 这个命令可以统计你历史上输入的命令的次数的前十条 整个命令基 ...
- C#双面打印解决方法(打印word\excel\图片)
最近需要按顺序打印word.excel.图片,其中有的需要单面打印,有的双面.网上查了很多方法.主要集中在几个方式解决 1.word的print和excel的printout里设置单双面 2.prin ...