免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1775 | 回复: 5
打印 上一主题 下一主题

[文本处理] 文本排序求助 [复制链接]

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-12-17 15:52 |只看该作者 |倒序浏览
大家好!
我有一个问题向大家请教:
首先有这样一个变量中定义了一个列表:
list="Amemiya:JP6293213 Igarashi:JP1035253 John:US8390290 Kishibata:JP4150246 Laurent:FR4392052 Liu:CN3014842 Sandeep:IN7390451"

然后有这样一个文件,文件已经是按照最末尾两个数字中前面一个数字排过序的。
file:
T-Mobile John NJ US [1754/2014]
Orange Laurent PA FR [1145/2014]
CMCC Liu BJ CN [1006/2013]
NTT-East Igarashi TK JP [840/2012]

我希望将$list中原来按人名字母顺序排序改为按awk '{print $2}' file排序,即变成:
list="John:US8390290 Laurent:FR4392052 Liu:CN3014842 Igarashi:JP1035253 Amemiya:JP6293213 Kishibata:JP4150246 Sandeep:IN7390451"

file中没有的人名则保持原顺序放在最后。
谢谢!

论坛徽章:
0
2 [报告]
发表于 2014-12-17 16:22 |只看该作者
回复 1# bikkuri
  1. awk -vl="$list" '{a[++i]=$2}END{for(j=1;j<=i;j++){r=a[j]":[^ ]+ ";if(match(l,r)){printf substr(l,RSTART,RLENGTH);sub(r,"",l);}};print l}' file
复制代码

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
3 [报告]
发表于 2014-12-17 18:34 |只看该作者
谢谢您的回复!

Looiml 发表于 2014-12-17 16:22
回复 1# bikkuri

论坛徽章:
30
申猴
日期:2014-04-10 09:43:532015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:0915-16赛季CBA联赛之吉林
日期:2017-09-04 12:14:43
4 [报告]
发表于 2014-12-17 21:09 |只看该作者
回复 1# bikkuri
  1. awk -vk="$list" '{split(k,a," ");for (i=1;i<length(a);i++)
  2. {if (a[i]~$4) {printf a[i]" ";b[a[i]]}}}END{for (j=1;j<=length(a);j++) {if(!(a[j] in b)) printf a[j]" "}print ""}' file
  3. John:US8390290 Laurent:FR4392052 Liu:CN3014842 Amemiya:JP6293213 Igarashi:JP1035253 Kishibata:JP4150246 Sandeep:IN7390451
复制代码

论坛徽章:
9
2015亚冠之大阪钢巴
日期:2015-06-04 11:47:30丑牛
日期:2015-01-22 15:49:26巳蛇
日期:2015-01-22 10:11:18巨蟹座
日期:2014-11-20 10:55:03天蝎座
日期:2014-11-16 22:10:26处女座
日期:2014-11-16 11:01:10申猴
日期:2014-09-19 11:12:37双鱼座
日期:2014-07-25 10:09:54程序设计版块每日发帖之星
日期:2015-08-24 06:20:00
5 [报告]
发表于 2014-12-17 21:18 |只看该作者

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
6 [报告]
发表于 2014-12-18 00:17 |只看该作者
谢谢您的提醒。
这两个问题确实比较相似。
但是也有不同的地方。
谢谢大家的帮助。

Buring__ 发表于 2014-12-17 21:18
http://bbs.chinaunix.net/thread-4152978-3-1.html
不是早就问过了么
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP