我在Solaris机器和Linux机器上运行以下sed语法
在Linux机器上sed做JOB它删除所有字符,直到第一个数字。
但是为什么这个sed语法在Solaris上不起作用?
我需要在sed语法中更改以便在Solaris上运行它?
在solaris(sed – 不删除string,直到第一个数字?)
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
Solaris默认情况下通常没有GNU版本的任何东西。 这意味着您提供的选项和参数通常必须有所不同,才能像sed这样的实用程序获得相同的行为。
有时,根本不可能得到相同的行为,例如,除非已经安装了 sed 的GNU版本 ,否则sed -i将不能在Solaris上运行。
从内存来看,Solaris上的sed支持“基本”正则expression式集,并且不包含+修饰符。 你可以模拟一个+这样的:
sed 's/[^0-9][^0-9]*//'
或者你可以在这种情况下使用*
sed 's/[^0-9]*//'
Solaris通常还在/usr/ucb下安装了这些实用程序的BSD版本。 他们往往非常相似,但偶尔也会有重要的不同, 比如ps 。