在grepping之后用终端排序

时间:2015-04-07 09:42:41

标签: sorting unix grep

我希望有人能够阐明如何在unix中对一组grepped值进行排序。

例如,如果我有一个列表,如;

  • qp_1_v2
  • qp_50_v1
  • qp_51_v4
  • qp_52_v1
  • qp_53_v1
  • qp_54_v2
  • qp_2_v1,

有没有办法使用通配符进行数字排序,即排序qp _ * _ v1;其中*将作为数字读取,然后根据此进行排序(忽略之前和之后的任何内容)。我目前发现的问题是gp_52_v2总是被读作字符串所以我必须剪切gp_和_v 只留下数字然后排序。

我希望这是有道理的......

提前致谢。

编辑:如果有人知道如何做的话会有一点好处..将是grep并列出具有最高版本的值,即如果gp_50存在3次,则后缀为_v1,_v2,_v3仅列出gp_50_v3。因此,此列表仍将包含具有各种版本的文件,但只有每个文件的最高版本将输出到终端。

1 个答案:

答案 0 :(得分:1)

  

ls |切-d' _' -f 2 |排序

在你的情况下用你的grep命令替换ls

编辑:在我输出剪切前的示例中,如果你想要文件的原始名称,请使用:

  

ls |排序-k2,2g -t' _'

     

k 是要比较的字段数

     

g 是要比较的最大字符数

     

t 是分隔符