我在 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)
默认情况下,Solaris 通常没有任何 GNU 版本。这意味着您提供的选项和参数通常必须不同才能从sed
.
有时,它不会是可能得到相同的行为在所有的,例如,sed -i
除非你已经在Solaris上是行不通的安装GNU版本的sed
。
根据记忆,sed
Solaris 上的 支持“基本”正则表达式集,这不包括+
修饰符。你可以模拟+
这样的:
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
.