Pregunta

Quiero añadir uno al último valor al final de una cadena de sed. Estoy pensando en la línea de

cat 0809_data.csv |sed -e 's/\([0-9]\{6\}\).*\(,[^,]*$\)/\1\2/g'| export YEARS = $(echo `grep -o '[^,]*$' + 1`|bc)

por ejemplo. 123456, kjhsflk, lksjgrlks, 2,8 -> 123456, 3.8

Sería esto más razonable / factible en awk?

¿Fue útil?

Solución

Esto debería funcionar:

years=$(awk -F, 'BEGIN{ OFS=", "} {print $1, $4+1}' 0809_data.csv)

Sería muy difícil de tratar de utilizar sed y hacer operaciones aritméticas con parte del resultado. Habría que tirar de la cuerda de distancia y hacer los cálculos y poner todo de nuevo juntos. AWK hace que perfectamente sin ningún problema.

Tenga en cuenta que cat no es necesario (incluso utilizando sed en un comando similar a la que en su pregunta) y probablemente no es necesario exportar la variable a menos que estés llamando a otro guión y lo necesitan para poder acceder a ella como una variable "global". Además, los depósitos en general, hacer matemáticas número entero por lo que no es necesario el uso bc a menos que necesite flotadores.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top