代码之家  ›  专栏  ›  技术社区  ›  user2793614

获取文件中所选单元格的平均值?

  •  0
  • user2793614  · 技术社区  · 10 年前

    我有一个包含多个列的文件。我想选择几个,并获得一行中所选单元格的平均值,并将整个平均值作为列输出。

    例如:

    Month    Low.temp     Max.temp     Pressure      Wind       Rain 
    JAN       17             36           120          5          0
    FEB       10             34           110          15         3  
    MAR       13             30           115          25         5
    APR       14             33           105          10         4
    .......
    

    如何获得平均温度(Avg.temp)和湿度(Hum)作为列?

    Avg.temp = (Low.temp+Max.temp)/2
    
    Hum = Wind * Rain
    

    获取平均温度

    Month    Low.temp     Max.temp     Pressure      Wind       Rain   Avg.temp      Hum
    JAN       17             36           120          5          0      26.5          0
    FEB       10             34           110          15         3       22          45  
    MAR       13             30           115          25         5      21.5        125
    APR       14             33           105          10         4      23.5         40
    .......
    

    我不想在excel中完成。是否有任何简单的shell命令来执行此操作?

    1 回复  |  直到 10 年前
        1
  •  2
  •   fedorqui    10 年前

    我会用 awk 这样地:

    awk 'NR==1 {print $0, "Avg.temp", "Hum"; next} {$(NF+1)=($2+$3)/2; $(NF+1)=$5*$6}1' file
    

    或:

    awk 'NR==1 {print $0, "Avg.temp", "Hum"; next} {print $0, ($2+$3)/2, $5*$6}' file
    

    这包括进行计算并将其附加到原始值。

    让我们看看它的行动 column -t 要获得良好的输出:

    $ awk 'NR==1 {print $0, "Avg.temp", "Hum"; next} {$(NF+1)=($2+$3)/2; $(NF+1)=$5*$6}1' file | column -t
    Month  Low.temp  Max.temp  Pressure  Wind  Rain  Avg.temp  Hum
    JAN    17        36        120       5     0     26.5      0
    FEB    10        34        110       15    3     22        45
    MAR    13        30        115       25    5     21.5      125
    APR    14        33        105       10    4     23.5      40