You have a a column of numbers that you have produced in some manner such as :-
$ awk '/clean message/ {print $(NF-1)}' mail.info.log ... 100935 12197 3606 84653 4498 99110 4762 3001 10889 12611 12249 12245 136599 49097 6668
And you want a quick and dirty way of finding the largest number. Well there is a way but it is perhaps the least efficient way to do it, and that is to sort the numbers into numerical order and use “head” to display the first one :-
$ awk '/clean message/ {print $(NF-1)}' mail.info.log | sort -rn | head -1 5476168
But frankly there must be a better method. And yes there is if you happen to be using zsh (or possibly others, but this has been tested with zsh). Simply iterate over the values assigning the current value to the “max” variable if the current variable is larger :-
$ max=0; for x in $(awk '/clean message/ {print $(NF-1)}' mail.info.log); [[ $x -gt $max ]] && max=$x; echo $max 5476168
You may be wondering why I don’t simply use the ability of awk to perform calculations. Well that is certainly possible, but I may not always be using awk to produce the numbers in the first place, and this is supposed to be a generic recipe.