给定的文件包含:
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 是行数。
sort
有人知道一种更聪明和/或更有效的方法来实现这一点吗?
你可以试试 awk 'NR==1 || $0 < min {min=$0} END {print min}' file ,计时,看看是否比 sort|head
awk 'NR==1 || $0 < min {min=$0} END {print min}' file
sort|head