sed + 在 Solaris 上不起作用

sed + 在 Solaris 上不起作用

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

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

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

为了在 Solaris 上运行它,我需要对 sed 语法进行哪些更改?

在 solaris 上(sed - 直到第一个数字才删除字符串?)

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

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

在 Linux 上(我得到了良好的结果)

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

  5.3.7.1-12

答案1

Solaris 通常默认不提供任何 GNU 版本。这意味着您提供的选项和参数通常必须不同,才能使实用程序(如)获得相同的行为sed

有时,完全不可能获得相同的行为,例如,sed -i除非您拥有安装了 GNU 版本sed

从记忆中,sedSolaris 支持“基本”正则表达式集并且这不包括+修饰符。您可以+像这样模拟:

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

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

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

Solaris 通常也安装了这些实用程序的 BSD 版本/usr/ucb。它们通常非常相似,但偶尔会有重要区别,例如ps

相关内容