免费注册 查看新帖 |

Chinaunix

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

[文本处理] 请教 TCL 数组排序的问题,谢谢。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-02-28 00:48 |只看该作者 |倒序浏览
TCL 数组的输出顺序是被自动排序了,如何不让他自动排序,按照创建的顺序输出。

程序创建了一个数组,ontlist
创建的顺序如下:
set ontlist(0/1/0/0)  [list  0/1/0/0 0 1 0 0 offline initial gpon - omci -]
set ontlist(0/1/0/1)  [list  0/1/0/1 0 1 0 1 online normal gpon 110 omci -]
set ontlist(0/1/0/2)  [list  0/1/0/2 0 1 0 2 online normal gpon 110F omci -]
set ontlist(0/1/0/3)  [list  0/1/0/3 0 1 0 3 online normal gpon 110F omci -]
set ontlist(0/1/0/11) [list  0/1/0/11 0 1 0 11 online normal gpon 110F omci -]
set ontlist(0/1/0/12) [list  0/1/0/12 0 1 0 12 offline initial gpon - omci -]
set ontlist(0/1/0/13) [list  0/1/0/13 0 1 0 13 online normal gpon 110 omci -]
set ontlist(0/1/0/20) [list  0/1/0/20 0 1 0 20 online normal gpon 110F omci -]
set ontlist(0/1/0/26) [list  0/1/0/26 0 1 0 26 online normal gpon 110F omci -]
set ontlist(0/1/0/27) [list  0/1/0/27 0 1 0 27 online normal gpon 110 omci -]
set ontlist(0/1/0/35) [list  0/1/0/35 0 1 0 35 online normal gpon 110 omci -]

parray 的时候顺序变成如下

ontlist(0/1/0/0)   = 0/1/0/0 0 1 0 0 offline initial gpon - omci -
ontlist(0/1/0/1)   = 0/1/0/1 0 1 0 1 online normal gpon 110 omci -
ontlist(0/1/0/11)  = 0/1/0/11 0 1 0 11 online normal gpon 110F omci -
ontlist(0/1/0/12)  = 0/1/0/12 0 1 0 12 offline initial gpon - omci -
ontlist(0/1/0/13)  = 0/1/0/13 0 1 0 13 online normal gpon 110 omci -
ontlist(0/1/0/2)   = 0/1/0/2 0 1 0 2 online normal gpon 110F omci -
ontlist(0/1/0/20)  = 0/1/0/20 0 1 0 20 online normal gpon 110F omci -
ontlist(0/1/0/26)  = 0/1/0/26 0 1 0 26 online normal gpon 110F omci -
ontlist(0/1/0/27)  = 0/1/0/27 0 1 0 27 online normal gpon 110 omci -
ontlist(0/1/0/3)   = 0/1/0/3 0 1 0 3 online normal gpon 110F omci -
ontlist(0/1/0/35)  = 0/1/0/35 0 1 0 35 online normal gpon 110 omci -

论坛徽章:
5
白羊座
日期:2014-10-28 11:23:27水瓶座
日期:2015-01-20 10:19:022015亚冠之柏斯波利斯
日期:2015-07-11 18:17:2015-16赛季CBA联赛之同曦
日期:2015-12-23 12:38:582016猴年福章徽章
日期:2016-02-18 15:30:34
2 [报告]
发表于 2014-02-28 09:10 |只看该作者
本帖最后由 klainogn 于 2014-02-28 09:11 编辑

tcl中的Array其实就是一个hash表,是按key---value的方式记录的, 并非按照你创建的顺序排列的,想要有序,建议先把key也就是index按你的顺序存为一个列表list变量,然后按列表去创建、读取

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
3 [报告]
发表于 2014-02-28 15:13 |只看该作者

  1. foreach tmp [lsort -dictionary [array names ontlist]] {
  2. puts "ontlist($tmp) = $ontlist($tmp)" }
复制代码

论坛徽章:
0
4 [报告]
发表于 2014-03-01 09:46 |只看该作者
谢谢 waker。太牛了,一个命令就搞定。

论坛徽章:
0
5 [报告]
发表于 2014-03-03 22:03 |只看该作者
也谢谢klainogn , 我的问题有点没说清楚。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP