给定一个包含以下内容的文件:
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 是行数。
任何人都知道更智能和/或更有效的方式吗?
答案 0 :(得分:2)
您可以尝试awk 'NR==1 || $0 < min {min=$0} END {print min}' file
,计算时间并查看它是否比sort|head