Назад | Перейти на главную страницу

Сбор IP из сложного журнала

У меня вопрос относительно использования более продвинутых grep, awk, sed. У меня есть файл журнала для проприетарного MTA, который содержит IP-адреса в строке, разделенные [redacted]^~x.x.x.x^[redacted]. Пока все мои гадания, бодрствования и седины не очень меня продвинули.

В этом файле журнала 331520 строк. Моя цель состояла в том, чтобы просто найти IP-адреса, а затем выполнить цикл for с помощью sed, чтобы sed 's / $ i / redhibited'. Я включаю образец одной из записей журнала. Если вы все знаете, я был бы очень признателен.

Jun  4 15:21:52 host.name mta-name: 13388^~88/CC-04671-FCA0DCF4^~D^~<redactedmessageid>^~@^~redacteduser@domain.tld^~redacted.hostname^~000.00.000.000^~port^~esmtp^~^~external_routing_nobounce^~0^~0.51^~subjectofmessage^~250 2.6.0 <redactedmessageid> [InternalId=2178458] Queued mail for delivery    

Вы хотите заменить IP-адреса строкой «[отредактировано]»? Нет необходимости grep затем sed в петле. sed дает вам цикл и "grepping" бесплатно.

sed 's/\^~[[:digit:]]\+\(\.[[:digit:]]\+\)\{3\}/^~[redacted]^~/' logfile

Я понял это. Больше страниц руководства. Небольшая доработка моего grep команда с -o показал мне список адресов с sort | uniq, Мне удалось получить список

grep -o '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*' log.file | sort -n | uniq