una línea usando sed y BC juntos?
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?
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.