The OpenNET Project / Index page

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

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

"Поиск и отсев grep и sed"  –1 +/
Сообщение от Raven77 email(ok) on 14-Авг-13, 19:36 
Как бы красиво это сделать? Есть два варианта, оба работают.
Задача найти строку и вывести только цифры:
1.
grep -wo \"Почта\".\/\>\<strong.class=\"num\"\>[0-9]* | grep -o [0-9]*

2. grep -wo \"Почта\".\/\>\<strong.class=\"num\"\>[0-9] | sed s/[\a-z\<\>\\/\"\=\Почта\ \]//g

Вроде бы считается, что sed работает быстрее. Или это не принципиально для такой простой задачи?
Можно ли использовать grep дважды?
И как бы сделать это с sed менее символозатратно?

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

Оглавление

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


1. "Поиск и отсев grep и sed"  +/
Сообщение от allez (ok) on 14-Авг-13, 20:20 
> Как бы красиво это сделать? Есть два варианта, оба работают.
> Задача найти строку и вывести только цифры:
> 1.
> grep -wo \"Почта\".\/\>\<strong.class=\"num\"\>[0-9]* | grep -o [0-9]*
> 2. grep -wo \"Почта\".\/\>\<strong.class=\"num\"\>[0-9] | sed s/[\a-z\<\>\\/\"\=\Почта\
> \]//g
> Вроде бы считается, что sed работает быстрее. Или это не принципиально для
> такой простой задачи?
> Можно ли использовать grep дважды?
> И как бы сделать это с sed менее символозатратно?

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


sed -nr '/"Почта".\/><strong.class="num">[0-9]/s/[^[:digit:]]//gp'

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

2. "Поиск и отсев grep и sed"  +/
Сообщение от Raven77 email(ok) on 14-Авг-13, 22:19 
Не работает почему-то
Там такая строчка:

alt="Почта" /></span>123

Т.е. это не вся строка,  нужная часть только

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

3. "Поиск и отсев grep и sed"  +/
Сообщение от allez (ok) on 15-Авг-13, 05:34 
> Не работает почему-то
> Там такая строчка:
> alt="Почта" /></span>123
> Т.е. это не вся строка,  нужная часть только

Вот ведь ёлы-палы! :-) Я из вашего же сообщения брал строку поиска, а тут вы заявляете, что
в реальности оно не так - в заблуждение вводите, однако. :-)

Ну да ладно, попробуем несколько упростить фильтр:


sed -nr '/Почта.*[0-9]/s/[^[:digit:]]//gp'

У меня эта конструкция работает:


$ echo '"Почта"./><strong.class="num">1234jj09' | sed -nr '/Почта.*[0-9]/s/[^[:digit:]]//gp'
123409

P. S. И еще один немаловажный момент: какую ОС и версию sed вы используете? Собственно,
мне с этого вопроса и следовало бы начать, поскольку сами-то вы этого не указали. :-)

P. P. S. Насчет "вроде бы sed работает быстрее" могу посоветовать использовать утилиту time.
Несколько раз прогоните команды вида time grep <file> и time sed <file>, а потом
сравните вывод, который будет выдавать time. Получите точный ответ без "вроде бы". :-)

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

4. "Поиск и отсев grep и sed"  +/
Сообщение от Raven77 email(ok) on 15-Авг-13, 08:38 
Да, точно, забыл про возможную разность версий,
так как у меня-то команды из первого сообщения работают.
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

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

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




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

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