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

获取文件中的最小行(基于字符串字典顺序的最小行)

  •  0
  • Zahra  · 技术社区  · 8 年前

    给定的文件包含:

    2011-03-01
    2011-04-01
    2011-01-01
    2011-05-01
    2011-02-01
    

    我想得到:

    2011-01-01
    

    哪一行是文件中最小的行,如果我们根据它们的字典顺序进行比较的话。

    实现这一点的一种方法是先对行进行排序,然后返回第一行:

    sort file | head -n 1
    

    然而,这是一个复杂的O( N 日志 N )由于 sort 而min操作应该只需O( N )在哪里 N 是行数。

    有人知道一种更聪明和/或更有效的方法来实现这一点吗?

    1 回复  |  直到 8 年前
        1
  •  2
  •   glenn jackman    8 年前

    你可以试试 awk 'NR==1 || $0 < min {min=$0} END {print min}' file ,计时,看看是否比 sort|head

    推荐文章