1

Я пытаюсь использовать строку sed с + на машине Solaris и на машине Linux.

на солярисе 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 ответ1

0

Обычно экранирование символа + (\+) приводит к буквальному + , а не модификатору. Это не относится к sed в Ubuntu 10.04, но может не быть в Solaris.

Мое лучшее предположение, что это зависит от реализации, поэтому sed 's/[^0-9]\+//' может работать.

Вы также можете попробовать sed -r 's/[^0-9]\+//' (где -r означает расширенные регулярные выражения). Работает на Ubuntu 10.04.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .