Регулярное выражение для поиска содержимого в разделе или блока текста в файле - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть файл с разделами контента следующим образом. Мне нужно искать номера портов в каждом разделе контента отдельно.

путь: файл etc / a.Config

 Global
  user abc
  group aaa

 frontend one
  bind 10.1.0.15:80
  option tcp

 frontend two
  bind 10.1.1.25:666
  option tcp 

 frontend three 
  bind 10.2.2.45:444
  option tcp

вывод должен быть:

  frontend one port: 80
  frontend two port: 666
  frontend three port: 444

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

1 Ответ

0 голосов
/ 08 апреля 2020

Вот регулярное выражение, которое выполняет сопоставление ... как применить это ко всему файлу, который я оставляю вам;)

$ cat a
#!/usr/bin/ruby

text = " Global
  user abc
  group aaa

 frontend one
  bind 10.1.0.15:80
  option tcp
"
m = text.match /(frontend [^ ]+)\n.*bind [^:]+:([0-9]+)/
puts "#{m[1]} port: #{m[2]}"

$ ./a
frontend one port: 80

Пояснительные слова:

/  # the slashes start and terminate the regex
(  # start a capturing group, capturing subexpressions matching the following line
frontend [^ ]+  # a literal frontend followed by a space followed by at least one non-space
)  # close capturing group
\n.*  # match new line, followed by any number of any character  
bind [^:]+:  #  match the word bind followed by a space followed by at least one non-colon followed by a colon
(
[0-9]+  # captured digits, one at the least
)
/
# m is an array that holds captured results from above.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...