排序一些查找结果

时间:2011-04-15 07:51:19

标签: unix sorting find

我需要在HP-UX上对查找的输出进行排序。我得到了以下结果:

/path/to/folder/one/blabla_110303121212.x
/path/to/folder/two/otherblabla_1102124302.x
etc.

使用sort -t“\”-k5,我设法从最后一个/中排序,但现在我希望能够从数字套装上的最后一个下划线进行排序。 -t不能带两个分隔符(唉),-n不起作用(不知道为什么),我不能给出一个确切的数字来告诉-k第二个参数,其中键开始,因为大小“ blabla“永远不会是一样的,我需要保持那些(当然令人讨厌的)路径。

有没有人有任何想法?提前谢谢!

1 个答案:

答案 0 :(得分:1)

sort(1)通常是稳定的,这意味着如果元素具有相同的排序键,它将不会干扰元素的顺序。

所以解决方案是多次对输出进行排序;从下划线后的部分开始,然后对名称进行排序。

另一个解决方案是将文件剪切成列,更改列的顺序,对此中间文件进行排序,然后将列连接回原始表单。

使用awk(1),您可以创建

  blabla_                     110303121212.x /path/to/folder/one/
  otherblabla_                  1102124302.x /path/to/folder/two/

这可以在没有任何选项的情况下排序;只需在前缀和后缀之间添加足够的空格,并将后缀与右侧对齐。