br + não funciona no solaris

1

Eu executo a seguinte sintaxe de sed na máquina Solaris e na máquina Linux

no Linux máquina sed fazer o JOB seu remover todos os personagens até o primeiro número.

mas porque esta sintaxe sed não funciona no Solaris?

O que eu preciso mudar na sintaxe do sed para executá-lo no Solaris?

no solaris (sed - não remove as cordas até o primeiro número?)

   solaris:/ ROOT > echo "Release............5.3.7.1-12"  | sed 's/[^0-9]\+//'

   Release............5.3.7.1-12

no linux (obtenho bons resultados)

  linux tmp]# echo "Linux Release............5.3.7.1-12"  | sed 's/[^0-9]\+//'

  5.3.7.1-12
    
por Eytan 10.01.2012 / 15:31

1 resposta

5

O Solaris geralmente não tem a versão GNU de nada por padrão. Isso significa que as opções e os argumentos que você fornecer precisarão ser diferentes para obter o mesmo comportamento de utilitários como sed .

Às vezes, não será possível obter o mesmo comportamento, por exemplo, sed -i não funcionará no Solaris, a menos que você tenha instalado a versão do GNU de sed .

Na memória, o sed no Solaris suporta o conjunto "básico" de expressões regulares e isso não inclua o modificador + . Você pode simular um + assim:

sed 's/[^0-9][^0-9]*//'

Ou você pode usar apenas um * para este caso:

sed 's/[^0-9]*//'

O Solaris geralmente também possui as versões BSD desses utilitários instalados em /usr/ucb . eles são frequentemente muito semelhantes, mas ocasionalmente têm diferenças importantes, como com ps .

    
por 10.01.2012 / 17:10