如何按行求和选择性列的数据并获得数据比率



我有一个文件,它有多个列,我想在其中对"编辑"部分中显示的每一行的$3$NF求和,该部分正在工作,现在在列cold-data下可见。

原始数据

Project_Name    Volume_Name     InactiveTier   PhysicalBlocks SSDtier  GRIDtier 
cayman  fsx3008_cayman          80289           85639           85702           0
cayman  fsx3008_caymans         0               72802           3516            69553
cch     fsx3008_cch             0               73116           3400            69847
test    fsx3008_test            0               3698            1193            2627
test    fsx3008_test1           0               2               26              0
dtsoio  fsx3008_dts1            74068           89596           89740           0
dtsoio  fsx3008_dts2            0               496843          188528          314897
arns    fsx3008_arns1           0               852             682             451
arns    fsx3008_arncs           0               397413          13866           383700
arns    fsx3008_arns2           28834           58472           63862           0
arns    fsx3008_ceres_ar0       0               11028350        105679          10929149
arns    fsx3008_ceres_ar1       0               6248810         151129          6108160
arns    fsx3008_ceres_ar2       0               5350713         90462           5262179
arns    fsx3008_ceres_ar3       0               4027086         61709           3974189
arns    fsx3008_ceres_ar4       0               1244903         45666           1200614
arns    fsx3008_ceres_ar5       0               1129566         52327           1077901

所需(示例视图(:

Project_Name  Volume_Name        InactiveTier  PhysicalBlocks  SSDtier  GRIDtier  Cold-Data  PercentageRatio PercentageRatioAvg
cayman        fsx3008_cayman     80289         85639           85702    0         80289      93.75            45.12

编辑:

很抱歉造成混乱。

以下是o尝试的内容,也希望打印这些列。

#!/bin/bash
printf '%s %s %s %s %s %s %s %sn' Project_Name Volume_Name InactiveTier PhysicalBlocks SSDtier GRIDtier Cold-Data ratio
gawk 'FNR > 1 { print $1,$2,$3,$4,$5,$6,$3+$NF, $8 = $7/$4}1' ttk
  1. 但是,我无法获得PercentageRatio列下的%,这应该是Cold-Data/PhysicalBlocks*100的结果
  2. 其次,如果有一种方法可以基于Project_Name获得Avg%,因为我们在某些Project_Name下有多个卷,例如cayman或CCD_ 10

输出如下:

Project_Name  Volume_Name        InactiveTier  PhysicalBlocks  SSDtier  GRIDtier  Cold-Data  PercentageRatio
cayman        fsx3008_cayman     80289         85639           85702    0         80289      0
cayman        fsx3008_cayman     80289         85639           85702    0         0
cayman        fsx3008_caymans    0             72802           3516     69553     69553      0
cayman        fsx3008_caymans    0             72802           3516     69553     0
cch           fsx3008_cch        0             73116           3400     69847     69847      0
cch           fsx3008_cch        0             73116           3400     69847     0
test          fsx3008_test       0             3698            1193     2627      2627       0
test          fsx3008_test       0             3698            1193     2627      0
test          fsx3008_test1      0             2               26       0         0          0
test          fsx3008_test1      0             2               26       0         0
dtsoio        fsx3008_dts1       74068         89596           89740    0         74068      0
dtsoio        fsx3008_dts1       74068         89596           89740    0         0
dtsoio        fsx3008_dts2       0             496843          188528   314897    314897     0
dtsoio        fsx3008_dts2       0             496843          188528   314897    0
arns          fsx3008_arns1      0             852             682      451       451        0
arns          fsx3008_arns1      0             852             682      451       0
arns          fsx3008_arncs      0             397413          13866    383700    383700     0
arns          fsx3008_arncs      0             397413          13866    383700    0
arns          fsx3008_arns2      28834         58472           63862    0         28834      0
arns          fsx3008_arns2      28834         58472           63862    0         0
arns          fsx3008_ceres_ar0  0             11028350        105679   10929149  10929149   0
arns          fsx3008_ceres_ar0  0             11028350        105679   10929149  0
arns          fsx3008_ceres_ar1  0             6248810         151129   6108160   6108160    0
arns          fsx3008_ceres_ar1  0             6248810         151129   6108160   0
arns          fsx3008_ceres_ar2  0             5350713         90462    5262179   5262179    0
arns          fsx3008_ceres_ar2  0             5350713         90462    5262179   0
arns          fsx3008_ceres_ar3  0             4027086         61709    3974189   3974189    0
arns          fsx3008_ceres_ar3  0             4027086         61709    3974189   0
arns          fsx3008_ceres_ar4  0             1244903         45666    1200614   1200614    0
arns          fsx3008_ceres_ar4  0             1244903         45666    1200614   0
arns          fsx3008_ceres_ar5  0             1129566         52327    1077901   1077901    0
arns          fsx3008_ceres_ar5  0             1129566         52327    1077901   0

我不明白你对#3的意思,但对于#1#2,你可以简单地执行:

printf '%s %s %sn' Project_Name Volume_Name cold_data
awk 'FNR > 1 { print $1,$2,$3+$NF }' ttk

最新更新