使用awk在数字列表中存储值

gfo*_*e89 4 awk

我有一个包含许多列的大型数据文件,我想将(比如说)第三列并输出到一个单独的文件中.

通过binning我的意思是:

我有一个数字列表说:

1
4
1
1
1
1
Run Code Online (Sandbox Code Playgroud)

我想要三组连续数字的平均数.

我的最终输出应该是

2
1
Run Code Online (Sandbox Code Playgroud)

第一个条目是平均值

1
4
1
Run Code Online (Sandbox Code Playgroud)

第二个条目是接下来三个数字的平均值,

1
1
1
Run Code Online (Sandbox Code Playgroud)

我如何使用awk实现这一目标?

anu*_*ava 8

使用此awk命令:

awk '{sum+=$1} NR%3==0 {print sum/3; sum=0}' inFile
Run Code Online (Sandbox Code Playgroud)

  • +1为一个好的解决方案.不要使用getline.想象一下,如果OP要求变为平均7个而不是3个,则会产生影响. (2认同)