@Инвазии я подозреваю, что у меня была такая же мысль, как монолог света. он уже пришел к выводу, что Кире нужно имя и лицо, да еще и с Л лицо было светло попытался проверить его имени настоящий тот, возможно, умер и это не только ограничивает число потенциальных подозреваемых, но увеличить свое подозрению в свет. он мог бы, наверное, использовала британская звезда но, наверное, хотел кого-то свет уже знаю Моя невестка живет там со своей семьей, мои дети имели много весенних каникул, поэтому я хочу провести перерыва с детьми в Лондон на время, наоборот мой муж только неделю перерыв, чтобы присутствовать на церемонии . Я тихо уверен, что это не будет причиной отказа, как я путешествовал в Лондон в прошлом. То, что я был смущен о датах упомянуть в заявке, как я думал, я б спросил о моем муже.

Ваша главная проблема в этой строке

кошка $именем | грэп {1,3\}\.\{1,3\}\.\{1,3\}\.\{1,3\} \Р"

Не только бесполезное использование кошка, главная ошибка заключается в том, что {1,3} означает "соответствовать 1,2 или 3" раз, но ты не сказал он , что , чтобы соответствовать. Синтаксис тоже неправильно, {} должны быть экранированы для регулярных грэп. То, что вы ищете, лучше записать так:

грэп -Ро 'и\D{1,3}\.\д{1,3}\.\д{1,3}\.\д{1,3}' именем

Это использует использование PCRE синтаксис () где означает "цифр" и которые я нахожу легче, но использовать стандартные команды grep регулярные выражения (Бресия), вы могли бы сделать:

грэп -о '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'
  • О делает grep в печати только совпадающие части линии.

  • Вы никогда не хотите, чтобы соответствовать символ конца строки, нет необходимости. Вы всегда должны попробовать и сделать ваши регулярные выражения как можно более простым. Это всегда лучше, чтобы использовать самым маленьким, простое выражение, которое соответствует вашим данным.

  • Вы наверняка не хотите искать . Пока Windows не конец строки с \р\н, большинство систем не и в любом случае, нет смысла искать его. Если вы должны соответствовать до конца строки, используйте $ , который будет работать во всех случаях.

В любом случае, чтобы сохранить в переменной этого:

ИС=$(грэп -Ро 'и\D{1,3}\.\д{1,3}\.\д{1,3}\.\д{1,3}' именем)

Вы можете сейчас Эхо $ИС для печати ИС.


На основе вашего последнего редактирования, я предполагаю, что вы хотите ИС определяются тегом IP-адрес. Я сейчас дам вам обязательное предупреждение: никогда не используйте регулярные выражения для разбора XML или аналогичных форматов. Тем не менее, чтобы получить только IP-адрес IP-адрес, сделать это:

ИС=$(грэп -Ро 'ip_v4="\к[0-9.]+' $имя_файла)

В к\ отбрасывает все, что было подобрано до него, так что вы получите только IP часть и поскольку вы знаете, что вы ищете всегда предшествует ip_v4=", можно просто искать самую длинную строку, содержащую только цифры и ..