este é o script que eu escrevi depois que eu encontrei este
#!/usr/bin/bash
awk 'BEGIN { FS=OFS=";"
RS="\n"}
{
gsub(/\n/,"",$0)
if (max_nf<NF)
max_nf=NF
max_nr=NR
for(x=1; x<=NF; ++x)
vector[NR,x]=$x
}
END {
row=1
printf vector[row,1] OFS vector[row,2] OFS vector[row,3]
for(col=4; col<max_nf; ++col)
printf OFS "Average(" vector[row,col] ")";
printf ORS
for(row=2; row<max_nr; ++row) {
printf vector[row,1] OFS vector[row,2] OFS vector[row,3]
for(col=4; col<max_nf; ++col)
printf OFS (vector[row,col]+vector[row-1,col]+vector[row+1,col])/3 ;
printf ORS
}
}' File_IN.csv>File_OUT.csv
Este script armazena o arquivo csv em uma matriz bidimensional e, em seguida, imprime a primeira linha. Para a coluna > 4 média de impressão (CABEÇALHO). Da segunda linha até o final do arquivo, imprima a primeira, a segunda e a terceira coluna e a média da coluna > 4. Mesmo se o script python do @gilles funcionar bem, escolhi este script como resposta porque usa o AWK conforme solicitado.