我有一个包含一长串整数的文件:
10
4
66
....
我想使用 UNIX 命令行工具找到最大值。我知道我可以使用sort
(并且确实有解决这个问题的解决方案sort
),但这是低效的,需要 O(N*log(N)) 和大量内存。通过一个简单的 for 循环,我应该能够找到 O(N) 中的最大值和几个字节的内存。
似乎肯定有一些程序(名称如max
)可以开箱即用地执行此操作——这是真的吗?
如果不需要负数,您可以使用它:
awk '$0>x{x=$0};END{print x}' input.txt
使用它来支持负数:
awk 'BEGIN{x=-2147483648};$0>x{x=$0};END{print x}' input.txt
初始化x
允许解决方案正确处理值 <= 0 的整数列表。有关更多详细信息,请参阅注释。
max=1
while read i
do
if [[ "$i" > "$max" ]]; then
max="$i"
fi
done < a.txt
echo "$max" > b.txt
a.txt 是输入文件(每行都有一个整数)。b.txt 包含 a.txt 中整数的最大值。
awk '{if($1>a)a=$1;}END{print a}' temp3
排序-nr 输入文件.txt | head -1 其中 inputfile.txt 包含所有数字。