Sto cercando di eseguire un'operazione matematica con sed
, ma continua a trattare le mie variabili come stringhe. L'input è di questo tipo:
$ echo 12 | sed 's/[0-9]*/&+3/'$ 12+3
Mi piacerebbe avere 15 come output. Devo eseguire l'operazione e sostituire il suo risultato matematico in un solo passaggio, perché sto eseguendo il programma come un demone Python e voglio evitare passaggi come il reindirizzamento di stdout
sui file, apri quei file, esegui operazioni, estrai il risultato, esegui la sostituzione. Per me, sed
sembra il migliore per eseguire tutto in una riga.
Ho provato a trasmettere input e output in vari modi, ad esempio
$ echo 12 | sed 's/[0-9]*/int(&+3)/'$ echo 12 | sed 's/[0-9]*/int(&+3)/'$ echo 12 | sed 's/[0-9]*/int(&+3)/'
ma il risultato era sempre una stampa del secondo campo.
Risposta accettata:
Se vuoi usare sed onestamente, allora questa è la strada da percorrere:
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:decine/|<||||||||||/gt decine//gs/+//g:meno/|- |/-/gt meno/-$//:indietro/||||||||||/
Inserimento:
1+2100+250100-250
Uscita:
3350-150
La tua missione, se dovessi scegliere di accettarla, è implementare la moltiplicazione.