sed + 不适用于solaris

Eyt*_*tan 2 linux solaris sed

我在 Solaris 机器和 Linux 机器上运行以下 sed 语法

在 Linux 机器上 sed 执行删除所有字符直到第一个数字的工作。

但是为什么这个 sed 语法在 Solaris 上不起作用?

我需要在 sed 语法中更改什么才能在 Solaris 上运行它?

在solaris上(sed - 在第一个数字之前不删除字符串?)

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

   Release............5.3.7.1-12
Run Code Online (Sandbox Code Playgroud)

在 linux 上(我得到了很好的结果)

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

  5.3.7.1-12
Run Code Online (Sandbox Code Playgroud)

Lad*_*ada 6

默认情况下,Solaris 通常没有任何 GNU 版本。这意味着您提供的选项和参数通常必须不同才能从sed.

有时,它不会是可能得到相同的行为在所有的,例如,sed -i除非你已经在Solaris上是行不通的安装GNU版本sed

根据记忆,sedSolaris 上的 支持“基本”正则表达式集,这不包括+修饰符。你可以模拟+这样的:

sed 's/[^0-9][^0-9]*//'
Run Code Online (Sandbox Code Playgroud)

或者你可以在*这种情况下使用 a :

sed 's/[^0-9]*//'
Run Code Online (Sandbox Code Playgroud)

Solaris 通常也有这些实用程序的 BSD 版本安装在/usr/ucb. 它们通常非常相似,但有时也有重要差异,例如与ps.