Questão sed + não funciona em solaris


Eu tento usar um sed linha com um + em uma máquina Solaris e em uma máquina Linux.

no Solaris sed não remove as strings até o primeiro número como eu quero:

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

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

no Linux eu recebo os resultados esperados:

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

  5.3.7.1-12
  • Por que esta sintaxe sed não funciona no Solaris?

  • O que preciso alterar na sintaxe para que seja executado no Solaris?


1


origem




Respostas:


Normalmente, escapando do + personagem (\+) resulta em um literal +, não um modificador. Este não é o caso com sed no Ubuntu 10.04, mas pode não estar no Solaris.

Meu melhor palpite é que isso é específico da implementação, então sed 's/[^0-9]\+//' pode funcionar.

Você também pode tentar sed -r 's/[^0-9]\+//' (Onde -r significa expressões regulares estendidas). Funciona no Ubuntu 10.04.


0



isso não parece estar correto - é só que o solaris sed não suporta '+'. A mesma pergunta do mesmo autor aqui parece ter mais informações: serverfault.com/questions/348490/sed-not-work-on-solaris - Richlv