2017-11-09 12 views
-1

出力をawkで変数として取得する方法。awk変数にエラーが発生しました

電流出力

cat ii 

Iie:573T 
Eed:448.0T 
vail:74T 

必要な出力

Total Size : 573 TB 
Total Used : 448.0 TB 
Avilable : 74 TB 
Used (%) : 86.10% # Total Used(%) = Total Used/Total Size *100 = 86.1(%) 

エラースクリプトが動作していません。

cat ii | awk ' /Size:/ {total_size=$NF} 
> /Used:/ { total_used=$NF } 
> END{ 
TotalUsed= total_size=total_used 
print "Total Used="TotalUsed}' 

答えて

1

必要86.1%EEDは少なくとも493.353

参照する取得するには:ここで

$ awk 'BEGIN{printf "%f\n", 86.1*573/100}' 
493.353000 

$ awk 'BEGIN{printf "%f\n", 493.353/573*100}' 
86.100000 

が修正ヘッダと割合

awk 'BEGIN{ 
      OFS=FS=":"; 
      h["Iie"]="Total Size"; 
      h["Eed"]="Total Used"; 
      h["vail"]="Avilable" 
    } 
    $1 in h{ 
      sub(/T/," TB",$2); 
      print h[$1], $2; 
      h[$1]=$2 
    } 
    END{ 
      print "Used (%)",h["Eed"]/h["Iie"]*100 
    } 
    ' infile 
を印刷する一つの方法です

入力:

$ cat infile 
Iie:573T 
Eed:448.0T 
vail:74T 

出力:

$ awk 'BEGIN{OFS=FS=":";h["Iie"]="Total Size";h["Eed"]="Total Used";h["vail"]="Avilable"}$1 in h{sub(/T/," TB",$2);print h[$1],$2; h[$1]=$2 }END{print "Used (%)",h["Eed"]/h["Iie"]*100}' infile 
Total Size:573 TB 
Total Used:448.0 TB 
Avilable:74 TB 
Used (%):78.185 

説明

awk 'BEGIN{ 
      OFS=FS=":";       # i/p and o/p field sep 
      h["Iie"]="Total Size";    # array of key and values 
      h["Eed"]="Total Used"; 
      h["vail"]="Avilable" 
    } 
    $1 in h{         # if its of our interest and in array h 
               # not really necessary, 
               # in current context 
               # skips saving any unwanted column in array h 

      sub(/T/," TB",$2);     # substiute T with space and TB 
               # can also be " &B" 
      print h[$1], $2;      # print corresponding header and 2nd field 
      h[$1]=$2        # we are done save value 
    } 
    END{ 
      # calculate percentage from saved value 
      # 
      print "Used (%)",h["Eed"]/h["Iie"]*100 
    } 
    ' infile 
0

awkをお試しください。これが役立つ場合はお知らせください。

awk -F":" ' 
/Iie/{ 
    total_size=$2+0; 
    next 
} 
/Eed/{ 
    total_used=$2+0; 
    next 
} 
/vail/{ 
    Avilable=$2+0; 
    next 
} 
END{ 
    print "Total Size :",total_size" TB" RS \ 
    "Total Used :",total_used" TB" RS "Avilable :"\ 
    ,Avilable" TB" RS "Used (%) :",(total_used/total_size)*100"%" 
}' Input_file 
関連する問題