Successivo: Rinominare file in minuscolo, Precedente: Centrare le righe, Su: Esempi [Contenuti][Indice]
Questo script è uno dei pochi che spiega come fare calcoli
in sed
. Ciò è effettivamente possibile,7 ma dev’essere fatto manualmente.
Per incrementare un numero è sufficiente aggiungere 1 all’ultima cifra, sostituendola con la cifra che segue. C’è un’eccezione: quando la cifra è un nove anche le cifre precedenti devono essere incrementate fino a che se ne trovi una che non è un nove.
Questa soluzione di Bruno Haible è molto ingegnosa e acuta perché
usa un solo buffer; senza questa limitazione, l’algoritmo usato in
Numerare le righe, è più veloce.
Funziona rimpiazzando i nove iniziali con un trattino basso, quindi
usando molti comandi s
per incrementare l’ultima cifra,
e alla fine sostituendo di nuovo i trattini con degli zeri.
#!/usr/bin/sed -f /[^0-9]/ d
# rimpiazza tutti i 9 iniziali con _ (si potrebbe usare qualsiasi altro # carattere che non sia una cifra) :d s/9\(_*\)$/_\1/ td
# incrementa solo l'ultima cifra. La prima riga aggiunge una cifra più # significativa di 1 se si deve aggiungere una cifra.
s/^\(_*\)$/1\1/; tn s/8\(_*\)$/9\1/; tn s/7\(_*\)$/8\1/; tn s/6\(_*\)$/7\1/; tn s/5\(_*\)$/6\1/; tn s/4\(_*\)$/5\1/; tn s/3\(_*\)$/4\1/; tn s/2\(_*\)$/3\1/; tn s/1\(_*\)$/2\1/; tn s/0\(_*\)$/1\1/; tn
:n y/_/0/
il guru di
sed
Greg Ubben ha scritto un’implementazione del calcolatore DC
rpn
!
È distribuito con sed.