输入:给定一个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排序作业的更多相关文章

  1. MapReduce --全排序

    MapReduce全排序的方法1: 每个map任务对自己的输入数据进行排序,但是无法做到全局排序,需要将数据传递到reduce,然后通过reduce进行一次总的排序,但是这样做的要求是只能有一个red ...

  2. 03-Foundation中NSMutableArray遍历、复制和排序

    目录: 一.NSString补充 二.NSMutableArray可变数组 三.遍历 四.NSArray支持的新语法 五.数组复制 六.数组的排序 SDK.API.Foundation.Cocoa是什 ...

  3. Hadoop 数据排序(一)

    1.概述 1TB排序通常用于衡量分布式数据处理框架的数据处理能力.Terasort是Hadoop中的的一个排序作业.那么Terasort在Hadoop中是怎样实现的呢?本文主要从算法设计角度分析Ter ...

  4. 实验楼实验——LINUX基础入门

    第一节 Linux简介 一.Linux的历史: 1965 年,Bell 实验室.MIT.GE(通用电气公司)准备开发 Multics 系统,为了同时支持 300 个终端访问主机,但是 1969 年失败 ...

  5. hadoop MapReduce 笔记

    1.        MapReduce程序开发步骤 编写map 和 reduce 程序–> 单元测试 -> 编写驱动程序进行验证-> 本地数据集调试 ->  部署到集群运行 用 ...

  6. 使用DBMS_STATS来收集统计信息【转】

    overview Oracle's cost-based optimizer (COB) uses statistics to calculate the selectivity (the fract ...

  7. Hadoop 中疑问解析

    Hadoop 中疑问解析 FAQ问题剖析 一.HDFS 文件备份与数据安全性分析1 HDFS 原理分析1.1 Hdfs master/slave模型 hdfs采用的是master/slave模型,一个 ...

  8. [hadoop转载]tearsort

        1TB排序通常用于衡量分布式数据处理框架的数据处理能力.Terasort是Hadoop中的的一个排序作业,在2008年,Hadoop在1TB排序基准评估中赢得第一名,耗时209秒.那么Tera ...

  9. ISPF常用命令

    [ISPF功能键] PF1: HELP帮助键 PF2: SPLIT键,改变分屏位置 PF3: END键,结束并退回上级菜单 PF4: RETURN键,结束并退回主菜单 PF5: REFIND键,重复最 ...

随机推荐

  1. IEEEXtreme 10.0 - Playing 20 Questions with an Unreliable Friend

    这是 meelo 原创的 IEEEXtreme极限编程大赛题解 Xtreme 10.0 - Playing 20 Questions with an Unreliable Friend 题目来源 第1 ...

  2. 【WPF】WriteableBitmap和BitmapImage的相互转换

    public BitmapImage ConvertWriteableBitmapToBitmapImage(WriteableBitmap wbm) { BitmapImage bmImage = ...

  3. 解决win10下git闪退

    网上找了很多方法,只有这个是有用的,记录下来. 问题描述 在git官网下载了软件,安装之后,git Bash出现闪退现象,同时在当前文件夹下面会生成一个mintty.exe.stackdump的文件. ...

  4. SSMdemo:租房管理系统

    使用ssm框架整合,oracle数据库 框架: Spring SpringMVC MyBatis 导包: 1, spring 2, MyBatis 3, mybatis-spring 4, fastj ...

  5. 深入理解javascript作用域系列第二篇

    前面的话 大多数时候,我们对作用域产生混乱的主要原因是分不清楚应该按照函数位置的嵌套顺序,还是按照函数的调用顺序进行变量查找.再加上this机制的干扰,使得变量查找极易出错.这实际上是由两种作用域工作 ...

  6. IIS服务器部署

    1.开始菜单----搜索框---输入IIS,在结果中,找到IIS快捷方式. 2.进入IIS主界面,右键网站,选择“添加网站”. 3.在“添加网站”对话框中,添加网站名称. 4.点击应用程序池选择,设置 ...

  7. 「2017 山东一轮集训 Day4」基因

    设置 \(\sqrt{n}\) 个关键点,维护出关键点到每个右端点之间的答案以及Pam的左指针,每次暴力向左插入元素即可,为了去重,还需要记录一下Pam上每个节点在每个关键点为左端点插入到时候到最左边 ...

  8. 20162325 金立清 S2 W8 C17

    20162325 2017-2018-2 <程序设计与数据结构>第8周学习总结 教材学习内容概要 二叉查找树是一棵二叉树,对于其中的每个结点,左子树上的元素小于父结点的值,而右子树上的元素 ...

  9. ContentType组件,Django缓存机制,跨域请求

    ContentType组件 解决什么问题:表的id和数据id,来唯一确定一条数据 用: 插入数据: models:content_obj = GenericForeignKey('table_id', ...

  10. Centos 右上角面板里没有wired network图标的问题

    开了很多的网页查看解决这个问题,都不是很有效,最后很简单的改了下一个文件就ok了,自己记录下,以免忘记! 打入命令:sudo gedit /etc/NetworkManager/nm-system-s ...