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

时间:2018-06-05 18:49:46

标签: linux shell min lexicographic-ordering

给定一个包含以下内容的文件:

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

我想得到:

2011-01-01

如果我们根据字典顺序比较这些行,那么这是文件中的最小行。

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

sort file | head -n 1

然而,由于sort,它具有O( n log n )的复杂性,而min操作应该仅在O( n )其中 n 是行数。

任何人都知道更智能和/或更有效的方式吗?

1 个答案:

答案 0 :(得分:2)

您可以尝试awk 'NR==1 || $0 < min {min=$0} END {print min}' file,计算时间并查看它是否比sort|head

更快