У меня 2 вида сообщений:подстроки с помощью SED
Board2Port1TS239.124.3.20:3000
Board4UserTagZDF_pippo_MFPService8011
Если я получаю сообщение 1 (он содержит Port
) вывод должен быть Board2Port1
Если я получу сообщение 2 (оно не содержит Port
) вывод должен быть Board4
Числа Board
и Port
не являются фиксированными.
/bin/echo "Board2Port1TS239.124.3.20:3000" | /bin/sed -e '/Port/ s/???/???/ ; /Port/! s/???/???/'
Я не могу найти решение ... может ли кто-нибудь мне помочь? спасибо
Большое спасибо Novocaine за идеальное решение.
У меня есть другой questione, непосредственно связанную с предыдущей:
с помощью оболочки решение в порядке:
[[email protected] snmptt]# /bin/echo 'Board2Port1TS239.124.3.21:3000' | /bin/sed -r 's/^(Board.(Port.)*).*/\1/g'
Board2Port1
Теперь я должен использовать эту команду внутри конфигурации SNMPTT. Это не работает. Это отчет snmptt.debug
Done performing substitution on PREEXEC line: /bin/echo 'Board2Port1TS239.124.3.21:3000' | /bin/sed -r 's/^(Board.(Port.)*).*/\1/g'
PREEXEC command: /bin/echo 'Board2Port1TS239.124.3.21:3000' | /bin/sed -r 's/^(Board.(Port.)*).*/\1/g'
command output: Board2Port1TS239.124.3.21:3000
Команда конфигурации Файл:
PREEXEC /bin/echo '$p2' | /bin/sed -r 's/^(Board.(Port.)*).*/\1/g'
выход "Board2Port1TS239.124.3.21: 3000" равно входному ($ p2). Почему я не согласен.
Заранее спасибо
Привет, это неверно: сообщения содержат всегда слово «Совет», иногда содержат порт ИЛИ UserTag. Мне нужно выполнить чек с портом. Если порт присутствует, выход должен быть BoardxPorty Если Порт отсутствует, то должен быть Boardp –
@MarcoMurtas Вы не указали, что в вашем файле ввода фиксированный текст (Board/Port). Исправленный материал обычно облегчает задачу. По крайней мере, этот ответ показал вам, как я думал, чтобы решить эту проблему. Время от времени вход может меняться, однако идея приходит к решению - ключевой момент.мои 2центы. – Kent
@MarcoMurtas хорошо, возможно, я неправильно понял ваш 'содержит порт' .. Я думал, что он содержит номер порта (или нет). – Kent