scripts script resueltos programas pasar parametros operaciones manejo espaƱol ejercicios ejemplos cadenas aritmeticas bash sed awk bc

script - comando bash para sumar e imprimir cada elemento de una columna e imprimir una nueva columna



scripts linux ejercicios resueltos (4)

Aquí está el comando para lograr lo que desea:

awk ''{$(NF+1)=$NF+$2}1'' <filename

¿Qué comando debería usar para sumar los valores de dos columnas específicas? Por ejemplo, tengo el archivo:

1 4 5 1 2 3 5 2 7 8 6 3

Y quiero sumar la segunda y la última columna para obtener el siguiente resultado

1 4 5 1 5 2 3 5 2 5 7 8 6 3 11

shoud yo uso awk y bc? He encontrado muchos ejemplos para sumar toda la columna ...


Para cálculos simples awk es el camino a seguir. En situaciones más complicadas, es posible que desee paralelizar la operación, puede hacerlo con GNU paralelo y una calculadora de su elección.

Con bash :

<infile parallel --colsep '' +'' echo ''{}'' ''$(( {2} + {4} ))

Con bash y bc :

<infile parallel --colsep '' +'' echo ''{}'' ''$(bc <<< "{2} + {4}")''

Tenga en cuenta que la versión actual de parallel no tiene una manera fácil de referirse al último elemento de la entrada, sin embargo, ahora hay un parche en la rama de desarrollo que permite la indexación negativa de los elementos, es decir, usted podría usar {-1} lugar de {4} .


Tratar:

awk ''{print $0, $2 + $NF }'' input_file


Ya que etiquetó la pregunta bashawk es la herramienta más adecuada para usar!)

#!/bin/bash while read -a ARRAY do echo ${ARRAY[@]} $((${ARRAY[1]}+${ARRAY[3]})) done < input.txt

salida:

$ ./sum.sh 1 4 5 1 5 2 3 5 2 5 7 8 6 3 11