Назад | Перейти на главную страницу

sed + не работает на solaris

Я запускаю следующий синтаксис 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.