簡體   English   中英

我需要找到最大值和最小值 Rowwise

[英]I need to find Maximum and Minimum value Rowwise

operator1,4578
operator2,1234
operator3,9875
operator4,6357
operator1,6353
operator4,9765
operator1,6347
operator1,6798
operator3,6793
operator3,1465
operator4,6796
operator4,3333

我需要使用awkpython找出每個運算符的最小值和最大值(也需要awk命令以及Python命令),輸出如下:

Name        Min     Max
operator1   4578    6798 
operator2   1234    
operator3   1465    9875 
operator4   3333    9765 

誰能幫我一下

@amit kumar:嘗試:

awk -F, 'FNR==NR{A[$1]=A[$1]>$NF?A[$1]:$NF;B[$1]=B[$1]>$NF?$NF:(B[$1]?B[$1]:$NF);next} FNR==1 && FNR!=NR{print "Name Min Max"}($1 in A){print $1 "\t" B[$1] "\t" A[$1];delete B[$1];delete A[$1]}'  Input_file  Input_file

在這里,我將字段分隔符設為“,”,然后 FNR==NR 條件將確保它僅在第一次讀取 Input_file 時執行。 其中 FNR 和 NR 都是 awk 的內置關鍵字並定義其中的行號。 每當讀取新的 Input_file 時,FNR 的值將被重置,其中 N 的值將繼續增加,直到成功讀取所有文件。 然后在那個塊中,我創建了一個名為 A 的數組,其索引為 $1,並在其中檢查前一個 A[$1] 的值是否大於當前相同的數組索引與 $NF 相比,然后更改 A[$1] 的值到當前 $NF 保持原樣(這基本上是為了讓每行 $1 具有最大值),我正在做的事情是在 Input_file 中獲取 $1 的最小值並將值存儲到數組 B 中。接下來將跳過所有接下來的語句,因此只會執行 FNR==NR 條件。 現在 FNR==1 && FNR!=NR 條件將僅在讀取第二個文件的第一行時為 TRUE,因為在寫入實際輸出之前我需要寫入標題列。 (A 中的 $1)現在檢查當前行的 $1 是否存在於數組 A 中,然后根據 OP 的請求打印當前 $1 和數組 A 的值,然后打印數組 B 的值。

編輯:現在也添加一種非單襯形式的解決方案。

awk -F, 'FNR==NR{
                 A[$1]=A[$1]>$NF?A[$1]:$NF;
                 B[$1]=B[$1]>$NF?$NF:(B[$1]?B[$1]:$NF);
                 next
                }
         FNR==1 && FNR!=NR{
                                print "Name Min Max"
                          }
         ($1 in A){
                        print $1 "\t" B[$1] "\t" A[$1];
                        delete B[$1];
                        delete A[$1]
                  }
        '    Input_file  Input_file

你可以試試這個:

awk -F, '
   min[$1]>$2||!min[$1]{
      min[$1]=$2
   } 
   max[$1]<$2{
      max[$1]=$2
   } 
   END{
     for(i in max){
        print i,min[i],(max[i]!=min[i]?max[i]:"")
     }
   }' file

該腳本使用了 2 個數組minmax ,它們在解析輸入文件時填充了值。

解析完成后,打印兩個數組。

請注意, max[i]!=min[i]?max[i]:""正在跳過最大值,以防它與最小值相同。

我讓你放置標題行,並在你想要縮進的情況下使用column命令......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM