11

整数の長いリストを含むファイルがあります。

10
4
66
....

UNIX コマンド ライン ツールを使用して最大値を見つけたい。私は使用できることを知っていますsort(実際、SO には を使用するこの問題の解決策がありますsort) が、それは非効率的であり、O(N*log(N)) と十分なメモリが必要です。単純な for ループを使用すると、O(N) の最大値と数バイトのメモリを見つけることができるはずです。

箱から出してすぐにこれを行うプログラム (のような名前max) がそこにあるに違いないようです---それは本当ですか?

4

4 に答える 4

27

負の数が予想されない場合は、これを使用できます。

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 の整数リストを適切に処理できます。詳細については、コメントを参照してください。

于 2012-08-13T09:43:55.813 に答える
1
awk '{if($1>a)a=$1;}END{print a}' temp3
于 2012-08-13T10:03:36.473 に答える
1
 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 の最大の整数が含まれています。

于 2012-08-13T09:44:24.663 に答える
-1

並べ替え -nr 入力ファイル.txt | head -1 ここで、inputfile.txt にはすべての数字が含まれています。

于 2014-08-22T12:26:31.423 に答える