输入:给定一个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. beego orm操作mysql数据库

    慢慢弄起来~~ 按官方操作文档试一下. 那个err重复和user编号问题,以后再弄.. package main import ( "fmt" "github.com/a ...

  2. js监测设备类型【安卓,ios,苹果微信,电脑pc】

    话不多说上代码: 1.判断是不是微信 function is_weixn(){ var ua = navigator.userAgent.toLowerCase(); if(ua.match(/Mic ...

  3. Java 中可变参数

    可变参数 Java 中可变参数 现在需要编写一个求和的功能,但是不知道有几个参数,在调用的时候才知道有几个参数,请问这如何实现呢? Java 给我们提供了一个 JDK 1.5 的新特性---可变参数 ...

  4. PHP学习笔记(一)数组

    初始化数组的方法:统一初始化或逐项初始化. 遍历数组的方法: 1.FOR循环 2.DO...WHILE语句 3.WHILE语句 4.foreach foreach($arr as $key=>$ ...

  5. thinkphp5.0安装

    ThinkPHP5的环境要求如下: PHP >= 5.4.0 PDO PHP Extension MBstring PHP Extension CURL PHP Extension 严格来说,T ...

  6. 洛谷P3950 部落冲突 [LCT]

    题目传送门 部落冲突 格式难调,体面就不放了. 分析: julao们应该都看得出来就是个$LCT$板子,战争就$cut$,结束就$link$,询问就$find$.没了... 太久没打$LCT$,然后发 ...

  7. LaTex 小技巧

    首行缩进 参考:小技巧之--首行缩进 %-------------------------------------------------------------------------------- ...

  8. Unity 2D游戏开发教程之游戏中精灵的跳跃状态

    Unity 2D游戏开发教程之游戏中精灵的跳跃状态 精灵的跳跃状态 为了让游戏中的精灵有更大的活动范围,上一节为游戏场景添加了多个地面,于是精灵可以从高的地面移动到低的地面处,如图2-14所示.但是却 ...

  9. luogu P1011 车站

    题目描述 火车从始发站(称为第1站)开出,在始发站上车的人数为a,然后到达第2站,在第2站有人上.下车,但上.下车的人数相同,因此在第2站开出时(即在到达第3站之前)车上的人数保持为a人.从第3站起( ...

  10. 【SPFA+二分答案】BZOJ1614- [Usaco2007 Jan]Telephone Lines架设电话线

    沉迷于刷水 以前的那个二分写法过不了QAQ 换了一种好像大家都比较常用的二分.原因还不是很清楚. [题目大意] 给出一张图,可以将其中k条边的边权减为0,求1到n的路径中最长边的最小值. [思路] 二 ...