Regex для IP после DST =, но не после SRC =

Mac OS X имеет встроенный сервер VNC.
Нет никакого способа использовать больше чем 1 графическую сессию за один раз, событие удаленно.
Единственные возможные вещи состояли бы в том, чтобы открыть локально графическую сессию для каждого пользователя (Быстрое переключение между пользователями) и выполнить экземпляр VPN на каждой сессии (см. http://www.redstonesoftware.com/multidesktop.html),

1
задан 8 October 2010 в 21:47
3 ответа

проблема - это, находит DST=192.168.1.1, но это должно только найти 192.168.1.1

Это во многом зависит от инструмента, который Вы используете. Например, с sed это могло бы дать Вам, хотят Вас, хотят.

echo "... SRC=10.1.1.1 DST=192.168.1.1 LEN=40 ..."  | \
sed -e 's/.*DST=\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\).*/\1/g'

192.168.1.1

См. эту статью о группировке regex.

При попытке сделать выделение, это похоже на то, что можно хотеть/нуждаться. Из конфигурации.

# cs_re_s:<color>:<regular expression>
#             Like cs_re but only the substrings are used(!). E.g.:
#             ^....(...)...(...)
#             In the example above only what matches between '(' and ')' is
#             assigned a color. See the 'acctail' colorscheme for an example.

Существует даже пример, который в том файле близко к тому, чему я верю, Вы хотите. Пример cs_re_s:cyan:kernel: .*(SRC=[^ ]*) *(DST=[^ ]*) То, что Вы хотите, который я думаю, должно выделиться, что-либо после DST может быть cs_re_s:red:kernel: .*DST=([^ ]*).

1
ответ дан 3 December 2019 в 19:33
  • 1
    это не работает на мультихвост, дает мне ошибку в regex - недопустимая обратная ссылка –   8 October 2010 в 23:01
  • 2
    Большой zoredache, muchas Gracias, это работает, Ваша справка высоко ценится –   9 October 2010 в 00:56
DST=(([2]([0-4][0-9]|[5][0-5])|[0-1]?[0-9]?[0-9])[.]){3}(([2]([0-4][0-9]|[5][0-5])|[0-1]?[0-9]?[0-9]))
1
ответ дан 3 December 2019 в 19:33
  • 1
    , проблема - это, находит DST=192.168.1.1, но это должно только найти 192.168.1.1. я ищу выражение, которое просто находит IP после DST = –   8 October 2010 в 22:20
  • 2
    фигурные скобки должен поместить IP-адрес в 1$, 2$... –  krissi 8 October 2010 в 22:51
  • 3
    Нет фигурные скобки действительно копируют повторение. Я думаю, что Вы имеете в виду "круглые скобки". –  Paused until further notice. 10 October 2010 в 03:18

Это может быть сделано с lookbehind выражением.

regex_test.txt содержание:

DST=192.168.1.1
SRC=192.168.1.1

затем из командной строки:

   grep -P '(?<=DST=)(([2]([0-4][0-9]|[5][0-5])|[0-1]?[0-9]?[0-9])[.]){3}(([2]([0-4][0-9]|[5][0-5])|[0-1]?[0-9]?[0-9]))' regex_test.txt

вывод:

DST=192.168.1.1

Править

grep -Po '(?<=DST=)(([2]([0-4][0-9]|[5][0-5])|[0-1]?[0-9]?[0-9])[.]){3}(([2]([0-4][0-9]|[5][0-5])|[0-1]?[0-9]?[0-9]))' regex_test.txt

вывод:

192.168.1.1
1
ответ дан 3 December 2019 в 19:33
  • 1
    Изменитесь -P кому: -Po производить только IP-адрес. –  Paused until further notice. 10 October 2010 в 03:21
  • 2
    Вы правы. Мой оператор вывода не указывает, что соответствует только IP. На моем терминале DST= является зеленым и 192.168.1.1 является красным, таким образом, это очевидно. ре –  Casual Coder 10 October 2010 в 06:57

Теги

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