Suma una lista de números en un archivo de texto usando Bash

Faaiq Bilal 20 junio 2023
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.

Artículo relacionado - Bash Math