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


4.16 Rimuovere tutte le righe duplicate

Questo script stampa solo le righe uniche, come ‘uniq -u’.

#!/usr/bin/sed -f

# Ricerca una riga duplicata --- fino a quel punto, stampa quel che trova.
$b
N
/^\(.*\)\n\1$/ ! {
    P
    D
}
:c
# Quando trova due righe uguali nel pattern space.  Se sono alla
# fine del file esce
$d
# altrimenti, continua a leggere le righe con N fino a
# quando ne trova una diversa
s/.*\n//
N
/^\(.*\)\n\1$/ {
    bc
}
# Rimuove l'ultima istanza della riga duplicata
# e ritorna all'inizio
D