Successivo: , Su: Esempi   [Contenuti][Indice]


4.1 Centrare le righe

Questo script centra tutte le righe di un file su una larghezza di 80 colonne. Per cambiare questa larghezza, si deve sostituire il numero tra \{…\}, e si deve cambiare anche il numero di spazi aggiunti.

Si noti come i comandi di buffer sono usati per separare parti nell’espressione regolare da confrontare—questa è una tecnica comune.

#!/usr/bin/sed -f

# Mette nel buffer 80 spazi
1 {
  x
  s/^$/          /
  s/^.*$/&&&&&&&&/
  x
}
# elimina gli spazi iniziale e finale
y/tab/ /
s/^ *//
s/ *$//
# aggiunge un newline e 80 spazi alla fine della riga
G
# tiene i primi  81 caratteri (80 + un newline)
s/^\(.\{81\}\).*$/\1/
# \2 calcola la metà degli spazi, che vengono spostati all'inizio
s/^\(.*\)\n\(.*\)\2/\2\1/