代码之家  ›  专栏  ›  技术社区  ›  LiraNuna

Linux:GNU排序不按顺序排序

  •  1
  • LiraNuna  · 技术社区  · 16 年前

    标题概括了这一点。

    $ echo `seq 0 10` `seq 5 15` | sort -n
    0 1 2 3 4 5 6 7 8 9 10 5 6 7 8 9 10 11 12 13 14 15
    

    为什么这样不行?

    即使我不使用 seq

    echo '0 1 2 3 4 5 6 7 8 9 10 5 6 7 8 9 10 11 12 13 14 15' | sort -n
    0 1 2 3 4 5 6 7 8 9 10 5 6 7 8 9 10 11 12 13 14 15
    

    echo 直接:

    $ echo '0 1 2 3 4 5 6 7 8 9 10 5 6 7 8 9 10 11 12 13 14 15' > numbers
    $ sort -n numbers 
    0 1 2 3 4 5 6 7 8 9 10 5 6 7 8 9 10 11 12 13 14 15
    
    4 回复  |  直到 12 年前
        1
  •  10
  •   Chris Lutz    16 年前

    sort(1) 种类 线 . 您必须自己解析以空格分隔的数据:

    echo `seq 0 10` `seq 5 15` | tr " " "\n" | sort -n
    
        2
  •  9
  •   Dirk is no longer here    16 年前

    sort :

    $ echo `seq 0 10` `seq 5 15` | tr " " "\\n" | sort -n | tr "\\n" " "; echo ""
    0 1 2 3 4 5 5 6 6 7 7 8 8 9 9 10 10 11 12 13 14 15
    $
    
        3
  •  5
  •   Kamil Szot    16 年前

        4
  •  3
  •   Idelic    16 年前

    键入该命令时,会将数字序列全部传递给 sort 排成一行。那不是你想要的。只需传递 seq 直达 分类 :

    (seq 0 10; seq 5 15) | sort -n
    

    echo `command`
    

    通常 command echo ,它再次将其生成为输出。只需让命令的输出直接通过即可(除非 真正地 回声 ,可能扩展转义序列,或将所有内容折叠为一行)。

    推荐文章