Suma una lista de números en un archivo de texto usando Bash
Este tutorial cubrirá múltiples métodos para sumar una lista de números en un archivo usando secuencias de comandos Bash. El primer método implica usar el comando pegar
, y discutiremos dos casos: usar un archivo existente y leer un archivo usando stdin
.
Por último, discutiremos los comandos cut
y awk
para obtener las sumas.
Suma una lista de números en un archivo de texto usando Bash
Los métodos descritos a continuación supondrán que tenemos un archivo de entrada con el título numbers.txt
.
Archivo numbers.txt
:
1
2
3
4
5
6
7
8
9
10
Usar un archivo existente
Si tenemos todos los números almacenados en un archivo de texto simple con cada número en una línea separada, podemos llamar al siguiente comando en Bash y obtener la suma.
Dominio:
paste -sd+ numbers.txt | bc
Producción :
55
Utilice stdin
(entrada estándar)
El siguiente comando puede leer de un archivo y obtener la suma de números.
Dominio:
cat numbers.txt | paste -sd+ | bc
Producción :
55
En este caso, usamos el comando cat number.txt
para leer el archivo. Este comando puede ser reemplazado por cualquier otro que devuelva una lista de números.
Cabe señalar que, si bien pegar
tiene una especificación definida por POSIX, no todas las implementaciones son iguales. El siguiente comando debería usarse en Mac OS para lograr el mismo resultado.
Dominio:
<cmd> | paste -sd+ - | bc
Usa el comando cortar
Supongamos que tenemos un archivo de texto que tiene varias columnas y queremos obtener la suma de una columna específica. Esto lo podemos lograr usando el comando cortar
.
Supongamos que tenemos un archivo numbers.txt
definido de la siguiente manera:
1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
10 1
Podemos resumir por separado cada una de las columnas usando el siguiente comando.
Dominio:
cat numbers.txt | cut -d ' ' -f 2 | paste -sd+ | bc -l
El argumento después de -f
representa el número de columna a sumar. También se debe tener en cuenta que el recuento de los números de columna, en este caso, comienza con 1
, no con 0
.
Como agregamos pasado 2
para la bandera -f
, obtendremos la suma de la segunda columna.
Producción :
10
Usa el comando awk
El comando awk
, llamado así por sus autores, es más adecuado para la tarea que nuestros métodos anteriores. Cuando se mide, awk
funciona mucho mejor que nuestros métodos anteriores.
Dominio:
awk '{s+=$1} END {print s}' numbers.txt
Producción :
55
Puede reemplazar numbers.txt
con el nombre del archivo que contiene sus números. Esto también nos permite eludir la lectura del archivo a través de cat
, que es parcialmente responsable del rendimiento superior.