The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Удаление подстроки последнего совпадения"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Удаление подстроки последнего совпадения"  +/
Сообщение от vfp7 email(ok) on 02-Окт-12, 12:10 
Добрый день

Не получается в одну строку вырезать из логов роутера порт компьютера:
на входе лог типа:
...
Oct  2 11:59:03 isa8 isa8: Local User (MAC=02-57-6C-72-2E-EE): 192.168.3.14:50561 -> 83.252.252.11:80 (TCP)Web
...

На этот лог я натравливаю скрипт:
cat /var/log/isa8.log | grep '(TCP)Web' | cut -f-4,10,12 -d' ' | cut -f-4 -d':'

Получаю на выходе:
Oct  2 11:59:03 192.168.3.14:50561 83.252.252.11

Осталось удалить подстроку порта :50561, и хоть лопни, одной строкой не получается привести к виду:
Oct  2 11:59:03 192.168.71.14 83.252.252.11

Бился с sed, ( примерно sed 's/\(.*\):[0-9]//' ), не получается, не хватает знаний ...
FreeBSD 9.0 sh

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Удаление подстроки последнего совпадения"  +/
Сообщение от allez (ok) on 02-Окт-12, 15:03 
>[оверквотинг удален]
> cat /var/log/isa8.log | grep '(TCP)Web' | cut -f-4,10,12 -d' ' | cut
> -f-4 -d':'
> Получаю на выходе:
> Oct  2 11:59:03 192.168.3.14:50561 83.252.252.11
> Осталось удалить подстроку порта :50561, и хоть лопни, одной строкой не получается
> привести к виду:
> Oct  2 11:59:03 192.168.71.14 83.252.252.11
> Бился с sed, ( примерно sed 's/\(.*\):[0-9]//' ), не получается, не хватает
> знаний ...
> FreeBSD 9.0 sh

Попробуйте так:


$ echo 'Oct  2 11:59:03 192.168.3.14:50561 83.252.252.11' | sed -r 's/:[0-9]{4,5} / /'
Oct  2 11:59:03 192.168.3.14 83.252.252.11

Правда, есть два момента. Во-первых, FreeBSD у меня сейчас под рукой нет, эта команда
была мной опробована в OpenBSD. А во-вторых, я слегка схалявил и заставил sed заменять
в строке двоеточие, за которым следует от 4 до 5 цифр и пробел, на одиночный пробел.
Если в логе вдруг попадется строка в которой будет фигурировать номер порта из трех и
менее знаков, то мой фильтр не сработает. Усовершенствовать команду предоставляю вам. :-)
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Удаление подстроки последнего совпадения"  +/
Сообщение от vfp7 email(ok) on 02-Окт-12, 15:13 
tnx
Номер порта в диапазоне 1024-65535, то есть минимум 4 цифры, так что все зер гут.
На фряхе все прошло.
Проблема снята.

cat /var/log/isa8.log | grep '(TCP)Web' | cut -f-4,10,12 -d' ' | cut -f-4 -d':' | sed -r 's/:[0-9]{4,5} / /'

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру