GNU/Linux >> Linux Esercitazione >  >> Linux

Aggiunta con 'sed'?

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/| 

Inserimento:

1+2100+250100-250 

Uscita:

3350-150 

La tua missione, se dovessi scegliere di accettarla, è implementare la moltiplicazione.


Linux
  1. Sostituisci le virgolette intelligenti con il comando sed di Linux

  2. Utilizzo di più modelli contemporaneamente con il comando Sed

  3. Come ottenere la portabilità con Sed -i (modifica sul posto)?

  4. Estrarre un'espressione regolare abbinata a "sed" senza stampare i caratteri circostanti?

  5. Usare Sed con personaggi speciali?

Manipolazione del testo con sed e grep

Utilizzo del comando Linux sed con esempi

sed con stringa letterale, non file di input

Come rimuovere il carattere \r con sed

Come sostituire in modo ricorsivo i caratteri con sed?

Espressione regolare con sed