Shell script: find maximum value in a sequence of integers without sorting

 max=1

 while read i
 do
  if [[ "$i" > "$max" ]]; then
     max="$i"
  fi
 done < a.txt

 echo "$max" > b.txt

a.txt is the input file(with an integer on each line). b.txt contains the maximum of the integers in a.txt.


You can use this if no negative number is expected:

awk '$0>x{x=$0};END{print x}' input.txt

Use this to support negative numbers:

awk 'BEGIN{x=-2147483648};$0>x{x=$0};END{print x}' input.txt

Initializing x allows the solution to properly handle integer lists with values <= 0. See the comments for more details.


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

Tags:

Unix

Shell