【问题标题】:Sorting with key not working用键排序不起作用
【发布时间】:2013-03-07 11:29:33
【问题描述】:

我正在尝试对看起来像这样的条目进行排序,只是格式化与某个区域相对应的文本数据,使用这些区域的天文坐标和名称。我想根据大括号内的名称来组织这些区域。

circle(20:34:36.717,+40:51:51.90,15") # text={tadpole4h}

circle(20:25:28.500,+41:08:20.80,15") # text={tadpole33}

circle(20:32:40.867,+41:51:25.24,15") # text={tadpole45}

基于蝌蚪场后面的数字 我对 linux 比较陌生,但我认为我是通过查看其他堆栈问题来解决这个问题的。 这是我擅长的:

sort -k54,56 -n test.reg

sort -k54,55 -n < test.reg

sort -k55,57 -n < test.reg

sort -k55,56 -n < test.reg

还尝试了将 k 和 n 交换并完整拼写每个部分。 我正在考虑搜索的另一种方法是,如果我可以使用通配符到达蝌蚪字符串,然后从那里排序,但我不知道如何让通配符进行排序。

【问题讨论】:

  • 也尝试了 n 和 k 交换
  • 哇,你有超过 57 列用空格分隔? oO
  • 您正在排序。现在你有什么问题想问一下吗?
  • 4h 是什么意思?这是十六进制吗?你期待什么订单?你还没有真正说出问题所在。
  • 啊,所以 k 对应于空间分隔,我认为它意味着文本中的一列

标签: linux unix sorting terminal


【解决方案1】:

您可以使用 sed 为每一行添加蝌蚪编号的前缀,然后根据此前缀对您的行进行排序,对于您正在考虑的 .* 内容:

sed 's/.*tadpole\([^}]*\)}/\1 &/' test.reg | sort -t' ' -k1

你也可以在打印前去掉前缀:

sed 's/.*tadpole\([^}]*\)}/\1 &/' test.reg | sort -t' ' -k1 | sed 's/^[^ ]* //'

【讨论】:

    猜你喜欢
    • 2017-10-27
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 2013-02-09
    • 2013-04-07
    • 2015-05-19
    • 2012-09-20
    相关资源
    最近更新 更多