sed match word1 и word2, чтобы получить слово между ними

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

Вот как выглядит строка в файле

[2016-11-10 11:22:42] УВЕДОМЛЕНИЕ [24518] chan_sip.c: Регистрация с '' 100 '' не удалась для '62 .210.189.39: 6584 '- Неверный пароль

Мне просто нужен ip-адрес между ' и :

Ниже моя попытка и получить это, чтобы вытащить ip

 sed -e "/failed[[:space:]]for[[:space:]]'*.*.*.*:*'/,/[[:space:]]-[[:space:]]Wrong[[:space:]]Password/p" full > output.txt 

2 Solutions collect form web for “sed match word1 и word2, чтобы получить слово между ними”

Очень простое решение с использованием cut

 cut -d \' -f 4 < full | cut -d : -f 1 > output.txt 62.210.189.39 

Вам может потребоваться отфильтровать его до строкой « Wrong Password так что здесь тоже что-то есть.

 grep 'Wrong Password' full | cut -d \' -f 4 |cut -d : -f 1 > output.txt 

Вот несколько более сложная версия, использующая sed

 sed -e "s/.*failed for '\([0-9\.]*\):.*/\1/" full > output.txt 

Используйте группировку, чтобы вытащить IP-адрес в parens

И просто для удовольствия я сделал один с perl

 perl -n -e "/failed for '([\d.]+):/ && print \$1 . \"\n\"" full > output.txt 

Также здесь есть команда grep из комментариев по вопросу, который работал для меня.

 grep -oP '(\d{1,3}\.{1})+\d{1,3}' full > output.txt 

Ты говоришь,

Мне просто нужен ip-адрес между: и:

Поэтому давайте использовать эти символы в качестве разделителей полей и выбрать IP-адрес:

 $ awk -F "[':]" '{ print $7 }' file 62.210.189.39 

Если вы хотите ограничить вывод строк, содержащих, например, строку Wrong password :

 $ awk -F "[':]" '/Wrong password/ { print $7 }' file 

При делении строки вверх на ' и : качестве разделителей полей вы получаете следующие поля:

 [2016-11-10 11:22:42] NOTICE[24518] chan_sip.c: Registration from '"100" ' failed for '62.210.189.39:6584' - Wrong password ^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^ ^^^^^^^^^^^^^^^^^ field1 f2 field3 field4 field5 field6 field7 f8 field9 
  • Использование sed для преобразования строк в строки
  • Удалить строку перед пробелом
  • Как извлечь первое целое из текстовой строки в столбце файла с разделителями табуляции?
  • awk, sed, grep, perl ... которые распечатываются в этом случае?
  • Извлечь определенный текст из переменной в сценарии оболочки
  • Free BSD / Mac OS X Sed: соответствие регулярному выражению и строка строки после матча
  • Возьмите первые 10 символов строк в файле fastq
  • Использование sed для замены строки, содержащей целые переменные
  • Как удалить символ новой строки из строк, предшествующих определенному шаблону?
  • Замените строку «string | string»
  • Передача разобранного вывода sed для поиска (в этом направлении)
  • Замена шаблона после n-го совпадения найдена в каждой строке?
  • Linux и Unix - лучшая ОС в мире.