Мой текстовый формат
synchronised to server (192.168.204.1) at stratum 5
Я хочу извлечь IP-адрес между скобками и текстом перед ним .like
synchronised to server (192.168.204.1)
что такое регулярное выражение (используя awk или grep)
Мой текстовый формат
synchronised to server (192.168.204.1) at stratum 5
Я хочу извлечь IP-адрес между скобками и текстом перед ним .like
synchronised to server (192.168.204.1)
что такое регулярное выражение (используя awk или grep)
grep -o '.*)'
будет работать.. если это не решает ваш реальный вариант использования, измените свой образец... также ожидается, что вы покажете, что вы пытались решить самостоятельно.. stackoverflow.com/questions/22937618/ может помочь вам в изучении регулярного выражения , но обратите внимание, что синтаксис/функция регулярного выражения отличается от инструмента к инструменту. Подробности см. в документации соответствующих инструментов. 17.07.2018 sed 's/\(([^)]*)\).*/\1/' <<< str
17.07.2018 Если ваш фактический Input_file такой же, как показанные образцы, то здесь вам может помочь следующее.
awk 'match($0,/.*\([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\)/){print substr($0,RSTART,RLENGTH)}' Input_file
Не могли бы вы использовать sed
для этого? Вот команда, которую вы могли попробовать
sed -r 's#(.*\([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}\)).*#\1#' Input_File
Краткое объяснение,
.*\([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}\)
будет соответствовать всему, что находится впереди (IP-адрес). Отмечено, что внутренние скобки должны быть экранированы.\1
будет печатать только совпадающую часть, заключенную во внешние скобки.Попробуй это!
.*\b([0-9]{1,3}\.){3}[0-9]{1,3}\b\)
Авария :
.*
выделяет весь текст перед IP-адресом
\b
соответствует границе слова между символом слова и символом, не являющимся словом. ([0-9]{1,3}\.)
соответствует числам 0–9 в общей сложности 1–3 раза (чтобы сделать 1.1.1.1 и 127.0.0.1 действительным IP-адресом), а затем соответствует точке.{3}
соответствует 3 раза указанному выше токену.
[0-9]{1,3}
соответствует числам 0–9 всего 1–3 раза.\b
– это граница слова\)
соответствует скобке