Как я извлекаю часть соответствия regex на Солярисе

Я могу предложить Вас Деинсталлятор Ashampoo

Это может создать shanpshoot реестра и файловой системы, экспортировать его в различные форматы. 2 различных снимка могут быть визуально сравнены в нем, или можно даже создать установку из него.

Превосходный инструмент, я использую его в течение многих лет даже, прежде чем Ahsampoo купил его, для создания портативных инструментов.

1
задан 11 February 2010 в 01:20
3 ответа
sed -n 's/.*[^0-9]\([0-9]\+ ms\).*/\1/p' *.log

Возможное улучшение для версий sed которые поддерживают этот тип чередования:

sed -n 's/\(^\|.*[^0-9]\)\([0-9]\+ ms\).*/\2/p' *.log

В OS X я должен был использовать расширенные регулярные выражения, потому что я не мог заставить основные расширенные регулярные выражения работать (это будет работать в GNU sedТакже, если Вы изменяетесь -E кому: -r, но основная расширенная версия работает там, также):

sed -En 's/(^|.*[^0-9])([0-9]+ ms).*/\2/p' *.log

Эти два последних примера работа, даже если последовательность Вы ищете, появляются в начале строки без начальных символов.

4
ответ дан 3 December 2019 в 18:13
  • 1
    Спасибо. Изменение + к * работы. Solaris' sed doesn' t поддерживают расширенные регулярные выражения. –  brianegge 11 February 2010 в 03:30

Попытайтесь использовать/usr/sfw/bin/ggrep

/usr/sfw/bin/ggrep-V grep (GNU grep) 2.5

Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc. Это - бесплатное программное обеспечение; посмотрите источник для копирования условий. Нет НИКАКОЙ гарантии; даже для ВЫСОКОГО СПРОСА или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ.

>

0
ответ дан 3 December 2019 в 18:13
  • 1
    Нет. sfw пакеты являются not' t установленный, и я don' t имеют доступ для установки их. Единственный каталог, в который я могу записать, является/tmp, и было бы легче скопировать файлы назад в машину с гну grep на нем, чем скопировать grep в/tmp. –  brianegge 11 February 2010 в 02:24

Солярис 5.10 включает удар 3.00, который имеет современный regex механизм. Следовать работы команды, хотя это является вполне более подробным, чем grep или sed решение.

cat *.log | while read line; 
do 
  if [[ $line =~ "([0-9]+) ms" ]]; then 
    echo "${BASH_REMATCH[1]}"; 
  fi;
done 

(Отформатированный на нескольких строках для удобочитаемости)

0
ответ дан 3 December 2019 в 18:13

Теги

Похожие вопросы