Estoy tratando de realizar una operación matemática con sed
, pero continúa tratando mis variables como cadenas. La entrada es de este tipo:
$ echo 12 | sed 's/[0-9]*/&+3/'$ 12+3
Me gustaría tener 15 como salida. Necesito hacer la operación y reemplazar su resultado matemático en un solo pasaje, porque estoy ejecutando el programa como un demonio de Python y quiero evitar pasajes como redirigir stdout
en archivos, abrir esos archivos, realizar operaciones, extraer el resultado, hacer el reemplazo. Para mí, sed
parece lo mejor para realizar todo en una línea.
Intenté transmitir tanto la entrada como la salida de varias maneras como
$ echo 12 | sed 's/[0-9]*/int(&+3)/'$ echo 12 | sed 's/[0-9]*/int(&+3)/'$ echo 12 | sed 's/[0-9]*/int(&+3)/'
pero el resultado siempre fue una impresión del segundo campo.
Respuesta aceptada:
Si honestamente quiere usar sed, este es el camino a seguir:
s/[0-9]/<&/gs/0//g; s/1/|/g; s/2/||/g; s/3/|||/g; s/4/||||/g; s/5/|||||/g; s/6/||||||/gs/7/|||||||/g; s/8/||||||||/g; s/9/|||||||||/g:tenss/|<||||||||||/gt tenss//gs/+//g:minuss/|- |/-/gt minuss/-$//:espaldas/||||||||||/
Entrada:
1+2100+250100-250
Salida:
3350-150
Tu misión, si decides aceptarla, es implementar la multiplicación.