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

Linux 获取文件中的最小行(基于字符串字典顺序的最小行),linux,shell,min,lexicographic-ordering,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 然而,由于排序的原因,这是一个O(n logn)的复杂度,而min操作应该仅在O(n)中可行,其中n是行数 有人知道一种更聪明和/或更有效的方法吗?你可以试试a

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

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 logn)的复杂度,而min操作应该仅在O(n)中可行,其中n是行数


有人知道一种更聪明和/或更有效的方法吗?

你可以试试
awk'NR==1 | |$0
,计时,看看它是否比
sort | head

快。你可以试试
awk'NR==1 | END{print min{min=$0sort
的解决方案涉及大量不必要的操作,因此无法很好地扩展。正如我上面提到的,我对O(n)解决方案感兴趣。你应该访问所有答案,而不仅仅是被接受的答案。2018年,我很惊讶这个问题以前没有被问过。也许我没有使用正确的关键字来查找它?,等等。使用
sort
的解决方案涉及大量不必要的操作,因此无法很好地扩展。正如我上面提到的,我对O(n)解决方案感兴趣。你应该访问所有答案,而不仅仅是被接受的答案。速度明显更快。在我的3800万条记录的数据集中,
awk
sol'n在查找
min
时比
sort
快约6倍,而使用
awk
查找
max
sort | tail
快约10倍。在我的3800万条记录的数据集中,
awk
sol'n在查找
min
时比
sort
快约6倍,而使用
awk
查找
max
sort>tail
快约10倍