Usando a sintaxe padrão (já que o OP mencionou o Solaris):
sed 's/^\([[:blank:]]*\)\.*//;s/\.*\([[:blank:]]*\)$//'
No Solaris, como de costume, você pode precisar chamar /usr/xpg4/bin/sed
ou command -p sed
Como removo os caracteres .
que começam no início de cada número ou terminam em cada número?
Observação - perl
um revestimento também é uma boa alternativa para sed
.
Exemplo de entrada:
.23.12.44.5.
.233.3.3.3
23.4.5.3.2..
....33.2.3.45.5
.3.3.2.....
Resultado esperado:
23.12.44.5
233.3.3.3
23.4.5.3.2
33.2.3.45.5
3.3.2
(note que as linhas podem terminar e / ou começar com espaços em branco (espaços ou tabulações) que devem ser preservadas).
Aqui você vai:
sed -e 's/^\(\s*\)\.\+//;s/\.\+\s*$//' your_file
Isso imprimirá o arquivo modificado na saída padrão. Para gravar em outro arquivo, use:
sed -e 's/^\(\s*\)\.\+//;s/\.\+\s*$//' your_file >new_file
Para modificar o arquivo, use
sed -i -e 's/^\(\s*\)\.\+//;s/\.\+\s*$//' your_file
EDITAR
$ cat foo
.23.12.44.5.
.233.3.3.3
line1
23.4.5.3.2..
....33.2.3.45.5
.3.3.2.....
line2
$ sed 's/^ *\.*//;s/\.* *$//' foo
23.12.44.5
233.3.3.3
line1
23.4.5.3.2
33.2.3.45.5
3.3.2
line2
Tags text-processing perl awk sed