파일에서 최대값 찾기

파일에서 최대값 찾기

아래와 같이 여러 숫자가 포함된 파일이 있습니다.

21 12 33 35 21 12 33 44 52 63 14 12 23 34 11 12 13 53 1 12 43 33 44

이 값의 최대값(예: )을 어떻게 찾을 수 있습니까 63? 사용하고 싶지만 stats이 명령이 내 컴퓨터에 없는 것 같아서 설치하고 싶지 않습니다. 어떻게 사용하나요 perl?

답변1

다른 답변은 매우 좋습니다. Perl/awk가 최선의 선택입니다.

재미로 다음을 사용할 수도 있습니다(GNU 가정 grep).

$ grep -Eo '[0-9]+' file | sort -rn | head -n 1
63

설명하다

  • grep -Eo '[0-9]+' file파일에서 양의 십진수를 모두 인쇄합니다. 깃발 에 따라 -o각 게임은 다른 줄에 인쇄됩니다.
  • sort -rn첫 번째 숫자가 가장 크도록 목록을 역순으로 정렬합니다.
  • head -n 1첫 번째 줄을 인쇄합니다.

단계적으로:

$ grep -Eo '[0-9]+' file
21
12
33
35
21
12
33
44
52
63
14
12
23
34
11
12
13
53
1
12
43
33
44
$ grep -Eo '[0-9]+' file | sort -rn 
63
53
52
44
44
43
35
34
33
33
33
23
21
21
14
13
12
12
12
12
12
11
1

답변2

나는 이것이 펄이 아니라는 것을 안다.

awk '{for(i=1;i<=NF;i++) if($i>maxval) maxval=$i;}; END { print maxval;}' file

답변3

사용List::Util(5.8 이후 표준 라이브러리의 일부, 그렇지 않으면 CPAN에서 사용 가능):

perl -MList::Util=max -lane 'print max(@F)'

답변4

정렬이 필요하지 않은 더 빠른 Perl 접근 방식은 다음과 같습니다.

$ echo '21 12 33 35 21 12 33 44 52 63 14 12 23 34 11 12 13 53 1 12 43 33 44' |
    perl -lane 'map{$m=$_ if $_>$m}@F; print $m'

또는 @Gnouc가 의견에서 제안한 대로:

$ echo '21 12 33 35 21 12 33 44 52 63 14 12 23 34 11 12 13 53 1 12 43 33 44' |
    perl -lane '$m<$_ and $m=$_ for @F; print $m'

관련 정보