Я запускаю следующий синтаксис sed на машине Solaris и на машине Linux
на машине 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
на linux (получаю хорошие результаты)
linux tmp]# echo "Linux Release............5.3.7.1-12" | sed 's/[^0-9]\+//'
5.3.7.1-12
Обычно в Solaris по умолчанию нет ни одной версии GNU. Это означает, что параметры и аргументы, которые вы предоставляете, часто должны быть разными, чтобы добиться того же поведения таких утилит, как sed
.
Иногда невозможно добиться такого же поведения, например, sed -i
не будет работать на Solaris, если у вас нет установил версию GNU из sed
.
По памяти sed
на Solaris поддерживает «базовый» набор регулярных выражений и это не включает +
модификатор. Вы можете смоделировать +
как это:
sed 's/[^0-9][^0-9]*//'
Или вы можете просто использовать *
для этого случая:
sed 's/[^0-9]*//'
В Solaris обычно также устанавливаются версии этих утилит BSD. /usr/ucb
. они часто очень похожи, но иногда имеют важные различия, например, с ps
.