免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 6125 | 回复: 35

[文本处理] 如何在排序后保存行号和次序信息 [复制链接]

论坛徽章:
0
发表于 2014-07-30 14:34 |显示全部楼层
本帖最后由 zcsgamer 于 2014-07-30 15:04 编辑

源文件中每列可能是数字、字母、混合,并有空格

排序后,在每一列后新加两列,其中第一列为此行在源文件中的行号信息,第二列为排序序号信息(如上下两行相等,则排序序号不变)

如文件:
3
2
2
1

排序后:
1 4 1
2 2 2
2 3 2
3 1 3

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
发表于 2014-07-30 14:46 |显示全部楼层
seq 3 | tac | cat -n     

这个例子只是一个简化 , 源命令可以根据文件的东西变化万千... X-Y ..

论坛徽章:
5
未羊
日期:2014-08-04 16:15:21天秤座
日期:2014-08-13 13:52:372015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:112015亚冠之浦和红钻
日期:2015-06-29 15:30:48
发表于 2014-07-30 14:48 |显示全部楼层
  1. awk '{print $0,NR|"sort"}'
复制代码

论坛徽章:
0
发表于 2014-07-30 14:50 |显示全部楼层
reyleon 发表于 2014-07-30 14:46
seq 3 | tac | cat -n     

这个例子只是一个简化 , 源命令可以根据文件的东西变化万千... X-Y .. utu ...


我说你这样有意思么?

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
发表于 2014-07-30 14:54 |显示全部楼层
回复 4# zcsgamer


    本来你就没提出问题的本质啊...

论坛徽章:
0
发表于 2014-07-30 14:56 |显示全部楼层
reyleon 发表于 2014-07-30 14:54
回复 4# zcsgamer


我又看了看,是你说的这样,接受批评。原想简化问题,结果简化走样了。

稍后修改下一楼。

论坛徽章:
0
发表于 2014-07-30 15:05 |显示全部楼层
修改完毕,感谢reyleon指出原叙述错误。

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
发表于 2014-07-30 15:24 |显示全部楼层
我觉得楼主的问题略复杂, 简单的shell可能解决不了.

而且, 我实在是没明白楼主要原序号, 还要现在排序号. 到底有什么实用场景.
因为我知道会有需求需要原来的序号, 因为已经是排过后, 所以现在的序号一般就不再需要了.

论坛徽章:
0
发表于 2014-07-30 15:36 |显示全部楼层
q1208c 发表于 2014-07-30 15:24
我觉得楼主的问题略复杂, 简单的shell可能解决不了.

而且, 我实在是没明白楼主要原序号, 还要现在排序号 ...


我其实就是用shell解决不了才来发帖。

原意是用shell写一个批量下载网页,正则抓取后,按指定要求排序,最后输出的脚本,但首先的问题就是sort解决不了列中空格带来的麻烦,于是换了思路,想把每列先输出到文件,然后每列文件再排序,最后根据每列文件的排序结果得出最终排序结果,这里牵扯的问题就是我的帖子。

如果shell实在实现不了,我就用perl了。

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
发表于 2014-07-30 16:48 |显示全部楼层
回复 10# zcsgamer

还是perl吧.

以后的可维护性也强些.
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP