Tengo un archivo que contiene N * 10 líneas, cada línea consta de un número. Necesito resumir cada 10 líneas y luego imprimir un promedio para cada grupo. Sé que es factible en awk
, simplemente no sé cómo.¿Cómo resumir cada 10 líneas y calcular el promedio usando AWK?
9
A
Respuesta
14
intente algo como esto:
$ cat input
1
2
3
4
5
6
2.5
3.5
4
$ awk '{sum+=$1} (NR%3)==0{print sum/3; sum=0;}' input
2
5
3.33333
(Adapt para bloques de 10 líneas, obviamente.)
1
Puede ser algo como esto -
[jaypal:~/Temp] seq 20 > test.file
[jaypal:~/Temp] awk '
{sum+=$1}
(NR%10==0){avg=sum/10;print $1"\nTotal: "sum "\tAverage: "avg;sum=0;next}1' test.file
1
2
3
4
5
6
7
8
9
10
Total: 55 Average: 5.5
11
12
13
14
15
16
17
18
19
20
Total: 155 Average: 15.5
Si no desea todas las líneas que se imprimirán, entonces lo siguiente funcionaría.
[jaypal:~/Temp] awk '
{sum+=$1}
(NR%10==0){avg=sum/10;print "Total: "sum "\tAverage: "avg;sum=0;next}' test.file
Total: 55 Average: 5.5
Total: 155 Average: 15.5
Cuestiones relacionadas
- 1. Promedio de columna por horas (filas) usando awk
- 2. Calcular calificación promedio
- 3. ¿Puedo calcular el promedio de estos números?
- 4. Awk revertir ambas líneas y palabras
- 5. ¿Cómo inserto una línea en blanco cada n líneas usando awk?
- 6. reemplazando el `'' char usando awk
- 7. AWK eliminar líneas en blanco
- 8. Resumir datos usando .countBy
- 9. calcular promedio móvil exponencial en python
- 10. uso awk para identificar registro de varias líneas y filtrado
- 11. Script awk genérico para calcular el promedio en cualquier campo mediante el argumento de línea de comando
- 12. ¿Cómo calcular el tiempo promedio de espera y el tiempo promedio de respuesta en la programación SJF?
- 13. awk para cambiar el separador de registros (RS) a cada 2 líneas
- 14. Eliminar Líneas: después pattern1 y entre patrón2 y Pattern3 usando awk/sed/Perl
- 15. AWK: ejecutar CURL en cada línea y analizar resultar
- 16. cómo calcular un promedio de una matriz int2 utilizando Thrust
- 17. awk calcular la media o cero
- 18. Calcular el promedio de la columna de la consulta MYSQL
- 19. Calcular el color promedio de un área en una imagen
- 20. ¿Por qué awk no está imprimiendo nuevas líneas?
- 21. awk extraer varios grupos de cada línea
- 22. General - ¿Hay alguna forma de calcular un promedio basado en un promedio existente y dados nuevos parámetros para el promedio resultante?
- 23. promedio de cada 16 columnas en I
- 24. Java - Cómo calcular el primero y el último día de cada semana
- 25. Cómo calcular el número de líneas de código fuente
- 26. Cómo calcular Foot step usando el podómetro
- 27. awk suma de una columna y la impresión que se suma, en cada línea de entrada
- 28. ¿Cómo calcular el promedio de una columna y luego incluirla en una consulta de selección en Oracle?
- 29. ¿Cómo imprimir el patrón de expresiones regulares coincidentes usando awk?
- 30. Calcular promedio móvil exponencial en una cola en C#
Puede haber usado 'seq' para abstraer la entrada de prueba:' seq 50 | awk '{suma + = $ 1} (NR% 10) == 0 {imprimir suma/10; sum = 0;} '' – progo
Hm, parece que no funciona en mi caso. ¿El hecho de que estoy trabajando en valores decimales tiene algo que ver con eso? – gablin
@gablin: lo que he publicado funciona bien con valores decimales. – Mat