sed + 在 Solaris 上不起作用

sed + 在 Solaris 上不起作用

我尝试在 Solaris 机器和 Linux 机器上使用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
  • 为什么这个 sed 语法在 Solaris 上不起作用?

  • 为了使其能够在 Solaris 上运行,我需要对语法进行哪些更改?

答案1

通常情况下,转义+字符 ( \+) 会得到文字+,而不是修饰符。Ubuntu 10.04 上的情况并非如此sed,但 Solaris 上可能并非如此。

我最好的猜测是,这是特定于实现的,因此sed 's/[^0-9]\+//'可能会有效。

您也可以尝试sed -r 's/[^0-9]\+//'(其中-r意味着扩展正则表达式)它适用于Ubuntu 10.04。

相关内容