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 позволяет решению правильно обрабатывать целочисленные списки со значениями


awk '{if(>a)a=;}END{print a}' temp3

 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 - ...


sort - NR inputfile.тхт | голову -1 где входной_файл.txt содержит все числа.