【问题标题】:TCL custom sortingTCL定制分拣
【发布时间】:2011-05-09 15:13:13
【问题描述】:

由于我是 TCL 的新手,因此我将不胜感激。我通过对 CLI 命令的输出执行“regexp -all -line -inline”+ 标准来创建字符串列表。这个列表的每个元素现在都以一个数字结尾,我想在每个字符串中以这个特定的数字结尾对列表进行排序,但保留字符串的其余部分。一个紧密的例子是必须按文件大小对“ls -la”命令的输出进行排序。我尝试了以下方法,但没有成功:

lsort -command  "regexp -lineanchor {\d+$}" -integer $list

花了一天的时间试图弄清楚这一点后,我决定问你们。你能帮忙吗?

【问题讨论】:

    标签: sorting tcl


    【解决方案1】:

    说实话,我不明白你想用-command "regexp -lineanchor {\d+$}" 实现什么。如果您打算比较数字,命令 regexp -lineanchor {\d+$} 实际上应该总是返回 1。

    如果您想按子列表的最后一个元素对列表进行排序,您可以使用-index 选项。例如:

    lsort -index end -integer {{x y 5} {a b 8} {c c 3} {u u 1} {x y 2}}
    

    返回:

    {u u 1} {x y 2} {c c 3} {x y 5} {a b 8}
    

    如果您的子列表中没有您的数据,但有一行一行的数据,您必须先split 它,例如:

    lsort -index end -integer [split $data "\n"]
    

    【讨论】:

    • bmk,你是最棒的!!!这正是我想要完成的。非常感谢!
    • @torta:很高兴能帮到你。
    • +1 但我会在排序之前做一个单独的步骤从每一行中提取单词,因为不能保证另一个命令会以与 Tcl 完全相同的方式理解单词。
    猜你喜欢
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-20
    • 2016-01-13
    • 2018-04-21
    • 1970-01-01
    • 2012-07-13
    相关资源
    最近更新 更多