Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Помогите с sed'ом

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Unix
Предыдущая тема :: Следующая тема  
Автор Сообщение
Andrew Grekhov



Зарегистрирован: 29.06.2005
Сообщения: 200

СообщениеДобавлено: Вс Ноя 16 2008 09:21    Заголовок сообщения: Помогите с sed'ом Ответить с цитатой

Имеются строки вида:
18:08:03.006380 ethertype dhcp1.bootps
00:11:22:33:44:55
18:08:03.006398 ethertype dhcp2.bootps
00:11:22:33:44:55

Надо вид:
18:08:03.006380 ethertype dhcp1.bootps 00:11:22:33:44:55
18:08:03.006398 ethertype dhcp2.bootps 00:11:22:33:44:55

Извините, что туплю, но что-то не получается
убрать только один перевод строки после bootps

Если интерестно: смотрю какие хосты "заставляют"
dhcp сервер на свой запрос отвечать броадкастом.
Применение именно sed конечно не обязательно,
желательно чтото из /bin .Не PERL.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
критикан



Зарегистрирован: 18.02.2005
Сообщения: 247

СообщениеДобавлено: Пн Ноя 24 2008 15:28    Заголовок сообщения: а зачем нужен тэг <br>? Ответить с цитатой

нужен именно sed?
вот как через awk:
Код:
awk "{ s = $0; getline; print s \" \" $0 }"

-----------------------------------
а зачем нужен тэг <br>?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
and3008



Зарегистрирован: 12.10.2001
Сообщения: 14893
Откуда: Н.Новгород

СообщениеДобавлено: Пн Ноя 24 2008 23:44    Заголовок сообщения: Ответить с цитатой

Подтверждаю. awk во многих случаях заруливает все!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Andrew Grekhov



Зарегистрирован: 29.06.2005
Сообщения: 200

СообщениеДобавлено: Вт Ноя 25 2008 10:00    Заголовок сообщения: Ответить с цитатой

2 критикан
Спасибо щас попробую.
awk - не работал я пока с ним,
да и по обзору гдето было, что sed быстрее.
Когда файл маленький без разницы, а когда 1,2 Гб...
Ж(
Щас вначале на маленьком отработаю,
а после возьмусь за 60ШТ по 20М файлам.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
критикан



Зарегистрирован: 18.02.2005
Сообщения: 247

СообщениеДобавлено: Вт Ноя 25 2008 11:22    Заголовок сообщения: зачем писать программу под винды, если это встроено в юникс? Ответить с цитатой

если интересно, то вот временные показатели:

awk -- gawk.exe, портирован в консольное приложение под винды
ось -- win2000
камень -- целерон 2,4 ГГц
рам -- 768 Мб
файл -- 1,68 Гб
время старта -- 11:01:58
время финиша -- 11:11:22

итого полтора гига за десять минут, исполняемая команда указана выше
------------------------------------------
зачем писать программу под винды, если это встроено в юникс?


Последний раз редактировалось: критикан (Вт Ноя 25 2008 12:44), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Andrew Grekhov



Зарегистрирован: 29.06.2005
Сообщения: 200

СообщениеДобавлено: Вт Ноя 25 2008 11:44    Заголовок сообщения: Ответить с цитатой

Я не говорил, что мне надо под винды.
Есть лог tcpdump, его надо привести к человеческому виду.
Всё под linux. Точнее из php вызываю
shell функции.
Вот недописаный пока кусок, если интерестно.
А ещё будет стандартное sort, uniq...

Код:

/usr/sbin/tcpdump -e -n -v -r $file src host dhcp1 or src host dhcp2 or src host dhcp3 and dst host 255.255.255.255|grep \"00:[0-9a-f:]*\" |tr -d \"\t\"|tr -s \" \"|cut -d \" \" -f 1,5,25|awk '{ s = \$0; getline; print s\" \"\$0 }'


Про скорость было сказано, что sed всегда быстрее awk
хотя и синтаксис понепривычнее будет.
Вот после таких больших обработок и задумываешься
о производительности системы.Smile
sed, кстати, за сколько управится?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
критикан



Зарегистрирован: 18.02.2005
Сообщения: 247

СообщениеДобавлено: Вт Ноя 25 2008 13:33    Заголовок сообщения: не хули учителя за незнание -- он учит получать новые знания Ответить с цитатой

похоже, тов. Грехов находится в плену заблуждений, присущих начинающим юниксоидам, которые, чуть познакомившись с юниксом, сразу пинают своего вчерашнего учителя-винду. в винде, уважаемый Грехов, всё устроено по принципам (хоть иногда до-нельзя упрощённым, но) известным из юникса аж с 70-х годочков прошлаго ("а" поставлено намеренно) веку. поэтому мой пример вполне можно использовать, так как он демонстрирует принцип, а не конкретное приложение, ведь портирование awk'а в винду не изменило самого awk'а. я привёл пример под винду просто потому, что под рукой сейчас юникса нет.

между прочим, Вашу мущщняйщщую строку
Код:
...|grep \"00:[0-9a-f:]*\" |tr -d \"\t\"|tr -s \" \"|cut -d \" \" -f 1,5,25|awk '{ s = \$0; getline; print s\" \"\$0 }'

можно написать на одном только awk'е. примерно так:
Код:
...|awk -F ' ' '/00:[0-9a-f:]+/ { gsub(/\t/, \"\"); s=\$1 \$5 \$25; getline; print s\" \"\$1 }'

правда сейчас не могу представить проверенный и наилучший вариант, потому что целиком ситуацию не могу смоделировать
---------------------------------------------------
не хули учителя за незнание -- его задача научить получать новые знания, а не просто научить известному
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Unix Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...