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.