linux - 文本文件中的平均行/列数据

标签 linux unix awk sed average

我需要对文本文件中一行中的三列数据进行平均。

数据:

VALID_TIME STN   CDF05 CDF10 CDF20 CDF30 CDF40 CDF50 CDF60 CDF70 CDF80 CDF90 CDF95  MEAN    SD
2015031018 KMGM   50.3  51.5  52.9  54.0  54.9  55.8  56.7  57.6  58.6  60.1  61.3  55.8   3.3 
2015031106 KMGM   75.7  76.8  78.2  79.2  80.0  80.8  81.6  82.4  83.4  84.8  85.9  81.0   4.0 
2015031118 KMGM   54.0  55.1  56.5  57.5  58.4  59.3  60.1  61.0  62.1  63.6  64.8  59.3   3.9
2015031206 KMGM   71.1  72.3  73.9  75.1  76.1  77.0  77.9  78.9  80.1  81.6  82.9  77.0   4.4
2015031218 KMGM   55.5  56.8  58.4  59.5  60.5  61.5  62.4  63.5  64.7  66.3  67.7  61.5   4.4

我感兴趣的列是 CDF80、CDF90 和 CDF95。结束格式应该是,例如:

VALID_TIME STN   CDF05 CDF10 CDF20 CDF30 CDF40 CDF50 CDF60 CDF70 CDF80 CDF90 CDF95  MEAN   NEWAVG
2015031018 KMGM   50.3  51.5  52.9  54.0  54.9  55.8  56.7  57.6  58.6  60.1  61.3  55.8   xx.x
2015031106 KMGM   75.7  76.8  78.2  79.2  80.0  80.8  81.6  82.4  83.4  84.8  85.9  81.0   xx.x

最佳答案

$ cat test.txt | awk -v OFS='\t' 'NR==1{$16="NEWAVG"}; NR!=1{$16=($11+$12+$13)/3};{print $0}'
VALID_TIME      STN     CDF05   CDF10   CDF20   CDF30   CDF40   CDF50   CDF60   CDF70   CDF80   CDF90   CDF95   MEAN    SD      NEWAVG
2015031018      KMGM    50.3    51.5    52.9    54.0    54.9    55.8    56.7    57.6    58.6    60.1    61.3    55.8    3.3     60
2015031106      KMGM    75.7    76.8    78.2    79.2    80.0    80.8    81.6    82.4    83.4    84.8    85.9    81.0    4.0     84.7
2015031118      KMGM    54.0    55.1    56.5    57.5    58.4    59.3    60.1    61.0    62.1    63.6    64.8    59.3    3.9     63.5
2015031206      KMGM    71.1    72.3    73.9    75.1    76.1    77.0    77.9    78.9    80.1    81.6    82.9    77.0    4.4     81.5333
2015031218      KMGM    55.5    56.8    58.4    59.5    60.5    61.5    62.4    63.5    64.7    66.3    67.7    61.5    4.4     66.2333

关于linux - 文本文件中的平均行/列数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28956309/

相关文章:

linux - 使用 awk 命令用逗号替换双引号 csv 文件中的管道

python - 如何从 1 个 txt 文件中获取值并附加到另一个文件?

linux - 通过 wget 下载服务器上的最新文件

bash - 将 CSV 拆分为以其中一列命名的文件

linux - 使用 -c 和 awk 的管道字符串调用 bash 命令

linux - 如何在 linux 中打开 R 图形窗口?

c++ - 处理程序是通过 XSetErrorHandler global 还是 threadlocal 设置的?

linux - 从 .dat 文件读取时如何消除除必需数字以外的所有内容?

linux - 我在旧目录中有一系列文件,我想检查该文件是否存在于新目录中。如果它不存在,我想对其进行一些操作

linux - 一场比赛后打印多行