domingo, 8 de abril de 2012

Sumando numeros en un archivo

Si tienes un pequeño archivo con números y estás encargado de sumarlos, puedes hacerlo con bc y paste:
cronos@olimpo:~$ cat file.txt 
1|11
2|22
3|33
4|44
5|55
|
6|66
7|77
8|88
9|99

cronos@olimpo:~$ cat file.txt | cut -d '|' -f 1 | grep -v '^$' | paste -sd '+' - | bc
45

Con cut seleccionas el campo a sumar, con grep deseleccionas campos vacíos, con paste agregas al final de cada línea un signo +, y con bc haces la suma.

Pero si tienes un archivo muy grande esto no va a funcionar; puedes mejor usar awk:
cronos@olimpo:~$ cat file.txt | awk 'BEGIN {FS="|";OFMT="%.2f"} {a+=$1;b+=$2} END {print "First field:",a,"Second field:",b}'

First field: 45 Second field: 495

Con FS configuras el delimitador de campo y con OMFT configuras el formato del numero, en este caso dos decimales sin notación científica. Con awk un bonito extra es poder agregar dos o más columnas al mismo tiempo.

Más información:

Sum of numbers in file - UNIX alternatives

No hay comentarios.:

Publicar un comentario