Регулярное выражение для поиска html тега

Модератор: Модераторы разделов

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Регулярное выражение для поиска html тега

Сообщение drBatty »

ну а я пошёл иным путём...

$

sed = tst2.html | sed -r 'N; :l s/^([0-9]+)\n(.*)([^0-9])<(.*)/\1\n\2\3|\1<\4/ t l s/^([0-9]+)\n</|\1</ s/^[0-9]+\n//' | sed -rnf htmlpre.sed | sed -r ' s/\|[0-9]+$/&/ T l3 N s/\n// :l3 s/([^<]*)\|([0-9]+)</\2\t\1</ s/\|[0-9]+</</g'


Код: Выделить всё

#!/bin/sed

# Стопроцентную гарантию даёт только морг :-)

# version 1.00

H

$ {
    x
    b l
}

/<|>/ {
    g
    s/<.*>/ /
    T
    s/.*(<|$)/\1/
    x
    s/<[^>]*$// # удаление хвоста
    b l
}
b


:l
# вывод строки
s/\s+/ /g
s/ ?([<>]) ?/\1/g
s/<[^>]*/\n&/g
s/^\s*(.*) ?$/\1/
p
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Регулярное выражение для поиска html тега

Сообщение drBatty »

Daeloce писал(а):
24.05.2009 17:59
sed '$d' /tmp/opentag.tmp > /tmp/opentag1.tmp
mv /tmp/opentag1.tmp /tmp/opentag.tmp

можно сразу

Код: Выделить всё

sed '$d' -i /tmp/opentag.tmp
Daeloce писал(а):
24.05.2009 17:59
if [ `wc -l /tmp/opentag.tmp | awk '{print $1}'` = 0 ]; then

проще так

Код: Выделить всё

sed '=;d' file.txt | sed '$!d'
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Регулярное выражение для поиска html тега

Сообщение sash-kan »

drBatty писал(а):
25.05.2009 05:50
Daeloce писал(а):
24.05.2009 17:59
if [ `wc -l /tmp/opentag.tmp | awk '{print $1}'` = 0 ]; then

проще так

Код: Выделить всё

sed '=;d' file.txt | sed '$!d'
быстрее:

Код: Выделить всё

sed '$=;d' file.txt
sed -n '$=' file.txt
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Регулярное выражение для поиска html тега

Сообщение drBatty »

sash-kan писал(а):
25.05.2009 14:08
быстрее:

Вы уверенны?

Shell

# time -p sed '$=;d' error_log 148419 real 3.62 user 2.40 sys 0.06 # time -p sed '=;d' error_log | sed '$!d' real 2.87 user 2.42 sys 0.03 148419
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Регулярное выражение для поиска html тега

Сообщение sash-kan »

drBatty писал(а):
26.05.2009 01:14
Вы уверенны?
абсолютно. особенно в
$ sed -n '$=' file.txt

собственно, даже в вашем примере видно, что вычисления заняли на 0.02 секунды больше (2.42-2.40). но это, конечно, в пределах погрешностей.
для чистоты надо, наверно, несколько сотен замеров проделать. и не на таких мизерных файлах. ну, хоть на порядок больше. для приличия.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Регулярное выражение для поиска html тега

Сообщение drBatty »

sash-kan писал(а):
26.05.2009 02:24
абсолютно. особенно в

ну на таких примитивных скриптах время тратится только на чтение с диска. потому, какой бы не был файл, время работы не изменится - если вам нужно затратить 10 минут на чтение - вы их потратите, некоторое торможение в 10-20 лишних тактов на байт просчитать невозможно ;) хотя вы правы - ваш скрипт оптимальнее :)
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Регулярное выражение для поиска html тега

Сообщение sash-kan »

drBatty
вы всё рассказываете правильно. но как-то у вас, видимо, выпадает из внимания, что я предложил заменить вызов _двух_ процессов вызовом _одного_. вот и всё.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
cy6erGn0m
Сообщения: 119
ОС: MandrivaLinux/Solaris 10

Re: Регулярное выражение для поиска html тега

Сообщение cy6erGn0m »

А зачем вы рассматриваете случаи типа
<
f
f>
g
<
ff
f
>
? Это ведь очевидно не валидный и нечего его разбирать..
I want to Believe!

They must find it difficult...
Those who have taken authority as the truth,
Rather than trusth as the authority.
/G.Messey/
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Регулярное выражение для поиска html тега

Сообщение drBatty »

sash-kan писал(а):
26.05.2009 16:43
что я предложил заменить вызов _двух_ процессов вызовом _одного_. вот и всё.
трёх на два :)
1) читаем
2) отдаём первой sed, которая отдаёт второй
3) вторая sed берёт, но (почти)ничего не выводит.

У вас всего одна, однако чтение настолько медленное, что будь хоть десять потоков - ничего не поменяется.

cy6erGn0m писал(а):
26.05.2009 16:58
А зачем вы рассматриваете случаи типа
потому-что в реальном коде столько всякого...
php, java, etc...
можно конечно сначала это всё сохранить или просто отбросить, но лучше сделать так, что-бы скрипт отрабатывал и такие ситуации. редко можно встретить в сети чистый и валидный html...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Регулярное выражение для поиска html тега

Сообщение sash-kan »

drBatty писал(а):
26.05.2009 17:19
1) читаем
2) отдаём первой sed, которая отдаёт второй
3) вторая sed берёт, но (почти)ничего не выводит.
то ли я дурак, то ли вы смотрите не в ту сторону. смотрите сюда:
drBatty писал(а):
25.05.2009 05:50
sed '=;d' file.txt | sed '$!d'

p.s. или, может быть, вы считаете потоки, а один процесс sed запускает два потока (один для чтения, другой для обработки), во что верится с трудом (а в код заглядывать лень). но тогда получается четыре потока.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Регулярное выражение для поиска html тега

Сообщение drBatty »

sash-kan писал(а):
27.05.2009 02:13
вы считаете потоки,

мне тоже лень заглядывать в глубину

Код: Выделить всё

#include <stdio.h>
int fgetc(FILE *stream)

думаю вы не хуже меня понимаете, что это действие далеко не тривиальное, и может занимать любое количество времени, и возможно сразу в несколько потоков... а вот дальше идёт сравнительно простая sed, с которой всё ясно, ну или две sed, что не намного сложнее :)
Конечно у меня получается именно 2 потока, а у вас - один, однако мои два по времени занимают не намного больше вашего одного.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: