utilizzare un semplice vuoto *
o [:blank:]*
per rimuovere tutti gli spazi possibili alla fine della linea:.
sed 's/ *$//' file
Uso della classe [:blank:]
si sta rimuovendo gli spazi e le schede:
sed 's/[[:blank:]]*$//' file
Nota questo è POSIX, quindi compatibile sia GNU sed e BSD.
Per GNU sed è possibile utilizzare l'estensione GNU \s*
per abbinare spazi e schede, come descritto in BaBL86's answer. Vedere le specifiche POSIX su Basic Regular Expressions.
Testiamo con un file semplice che consiste solo su linee, due con solo spazi e l'ultimo anche con le schede:
$ cat -vet file
hello $
bye $
ha^I $ # there is a tab here
rimuovere solamente spazi:
$ sed 's/ *$//' file | cat -vet -
hello$
bye$
ha^I$ # tab is still here!
Rimuovere spazi e tabulazioni:
$ sed 's/[[:blank:]]*$//' file | cat -vet -
hello$
bye$
ha$ # tab was removed!
penso che il comando deve essere 'sed 's/\ s * $ //'' invece. Il '$ 'indica l'ancoraggio di fine linea, quindi nulla viene dopo quello su ogni riga. –
right $ define end of object (working buffer) quindi non c'è niente dopo la fine. Per lo stesso motivo non c'è nulla che dia inizio (^) così ogni pattern ha^come primo elemento se presente e $ alla fine se presente (per conformità a POSIX, non vero quando viene usata un'azione come [[OR logico]) – NeronLeVelu