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

Get the average of the selected cells line by line in a file?

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

例如:

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

获得Avg.temp

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 命令可以做到这一点吗?

我会这样使用 awk

awk 'NR==1 {print [=10=], "Avg.temp", "Hum"; next} {$(NF+1)=(+)/2; $(NF+1)=*}1' file

或:

awk 'NR==1 {print [=11=], "Avg.temp", "Hum"; next} {print [=11=], (+)/2, *}' file

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

让我们看看它的实际效果,通过管道传输到 column -t 以获得不错的输出:

$ awk 'NR==1 {print [=12=], "Avg.temp", "Hum"; next} {$(NF+1)=(+)/2; $(NF+1)=*}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