awkの最大および最小平均合計

ファイル内容


#cat file id appsSubmitted appsCompleted appsRunning appsFailed appsKilled ts 
5 95255 94881 8 77289 2019-03-14 15:04:31 
6 95263 94883 14 77289 2019-03-14 15:06:08 
7 95318 94941 11 77 289 2019- 03-14 15:15:00 
8 95318 94941 11 77 289 2019-03-14 15:15:01 
9 95324 94947 11 77 289 2019-03-14 15:16:02 
10 95326 94950 10 77289 2019-03- 14 15:17:01 
11 95334 94955 13 77289 2019-03-14 15:18:01 
12 95337 94961 10 77289 2019-03-14 15:19:01 
13 95341 94966 9 77289 2019-03-14 15 :20:01 
14 95341 94967 8 77289 2019-03-14 15 :21:02

  

1.最大IDを見つける

方法1(比較にプリセット値を使用)

[root @ hbhly_60_213〜]#cat file | tail -n +2 | awk -F "" 'BEGIN {max = 0} {if($ 1> max){max = $ 1}} END {print max}' 
14

 

方法2(配列ソートを使用して最初の値をフェッチする)

[root @ hbhly_60_213〜]#cat file | tail -n +2 | awk -F "" '{number [$ 1] = $ 1} END {for(i in number){print number [i] | "sort -nr | 1" -nヘッド}}」
14

  

2.最小IDを見つける

方法1(比較にプリセット値を使用)

[root @ hbhly_60_213〜]#cat file | tail -n +2 | awk -F "" 'BEGIN {min = 5} {if($ 1 <min){min = $ 1}} END {print min}'                                   
5

  ただし、これには欠点があります。最小値を事前に指定する必要があります。$ 1を使用して取得すると、取得した値は空になります

[root @ hbhly_60_213〜]#cat file | tail -n +2 | awk -F "" 'BEGIN {min = $ 1} {if($ 1 <min){min = $ 1}} END {print min}'   

 

方法2(配列ソートを使用して最初の値をフェッチする)

[root @ hbhly_60_213〜]#cat file | tail -n +2 | awk -F "" '{number [$ 1] = $ 1} END {for(i in number){print number [i] | "sort -n | head -n 1 "}} ' 
5

  

3. idの合計を取り出します

[root @ hbhly_60_213〜]#cat file | tail -n +2 | awk -F "" '{sum + = $ 1} END {print sum}'                               
95

  

4. idの平均値を計算します

[root @ hbhly_60_213〜]#cat file | tail -n +2 | awk -F "" '{sum + = $ 1} END {print sum /(NR-1)}' 
10.5556

 

おすすめ

転載: www.cnblogs.com/gentlemanhai/p/12745728.html