Shell script: найти максимальное значение в последовательности целых чисел без сортировки
у меня есть файл с длинным списком целых чисел:
10
4
66
....
Я хочу найти максимальное значение с помощью инструментов командной строки UNIX. Я знаю, что могу использовать sort
(и действительно, есть решения этой проблемы, так что используйте sort
), но это неэффективно, требует O(N*log(N)) и много памяти. С помощью простого цикла for я смогу найти максимальное значение в O (N) и пару байтов памяти.
кажется, там должна быть какая-то программа там (с имя как max
), что делает это "из коробки" ---это правда?
4 ответов
попробуйте это:
awk '>x{x=};END{print x}' input.txt
[обновлено:]
awk 'BEGIN{x=-2147483648};>x{x=};END{print x}' input.txt
инициализация x позволяет решению правильно обрабатывать целочисленные списки со значениями
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 - ...