но конечно не работает

Вопрос "регулярные выражения в разделителе полей AWK" на мой взгляд незаслуженно обойден вниманием во всяких хау-ту, поэтому ничего и не нашел. Насчет этой строки- как правильно записать?
Модераторы: /dev/random, Модераторы разделов
Код: Выделить всё
sed 's/<[^>]*>//g' site.html
Код: Выделить всё
awk '{gsub(/<[^>]*>/,"")};1' site.html
в данном случае awk самый быстрый:
Код: Выделить всё
$ ls -lh coreutils.html
-rw-rw-r-- 1 www-data user 1.3M Apr 27 20:30 coreutils.html
$ wc -l coreutils.html
17414 coreutils.html
$ time for i in `seq 100`; do w3m -dump coreutils.html > /dev/null; done
real 0m38.289s
user 0m33.890s
sys 0m3.096s
$ time for i in `seq 100`; do sed 's/<[^>]*>//g' coreutils.html > /dev/null; done
real 0m17.127s
user 0m16.269s
sys 0m0.444s
$ time for i in `seq 100`; do awk '{gsub(/<[^>]*>/,"")};1' coreutils.html > /dev/null; done
real 0m5.808s
user 0m5.256s
sys 0m0.404s
Да нет, я всё понял. Я о том, что есть категории задач, для которых sed поджодит куда лучше, чем awk; и удаление частей текста по таким критериям -- одна из них. Нет, я даже допускаю, что Вы придумаете вариант решения на awk, который будет почти не страшнее уже приведенного на sed. Вот только сколько это у Вас займёт времени?
простите, но это извращение. regex'ы для того и придумали, чтобы каждый раз велосипед не изобретать.
Код: Выделить всё
<
html
>
<body>ts
sss
</body></html>
minoru-kun писал(а): ↑22.05.2010 21:10Вот поэтому и нужно использовать w3m. На bash/sed/awk будет слижком уж громоздко.
ну останется часть тегов (:
я сравнивал лишь 3 предложенных вариант.
ну в гугле же кеш, а вот у нас не открывается
а на w3m слишком долго (:
ну, «лежал» сайт, чего тут необычного?
ну просто лежит он до сих пор..
Код: Выделить всё
7 ae2.20g.t1600-2-210.nwtelecom.ru (212.48.198.249) 5.562 ms ae2.20g.t1600-2-mmt.nwtelecom.ru (212.48.194.94) 11.632 ms 11.624 ms
8 ae1.20g.t1600-1-mmt.nwtelecom.ru (212.48.194.98) 11.604 ms ae0.20g.t1600-1-210.nwtelecom.ru (212.48.198.254) 11.593 ms 11.576 ms
Код: Выделить всё
8 ae2.20g.t1600-2-mmt.nwtelecom.ru (212.48.194.94) 24.391 ms ae2.20g.t1600-2-210.nwtelecom.ru (212.48.198.249) 23.996 ms 23.990 ms
9 ae1.20g.t1600-1-mmt.nwtelecom.ru (212.48.194.98) 23.450 ms 23.438 ms 23.521 ms
Код: Выделить всё
6 ae2.20g.t1600-2-mmt.nwtelecom.ru (212.48.194.94) 2.441 ms ae2.20g.t1600-2-210.nwtelecom.ru (212.48.198.249) 1.868 ms ae2.20g.t1600-2-mmt.nwtelecom.ru (212.48.194.94) 2.775 ms
7 ae0.20g.t1600-1-210.nwtelecom.ru (212.48.198.254) 3.137 ms ae1.20g.t1600-1-mmt.nwtelecom.ru (212.48.194.98) 3.052 ms 1.243 ms
Код: Выделить всё
5 ae2.20g.t1600-2-mmt.nwtelecom.ru (212.48.194.94) 12.617 ms 12.629 ms ae2.20g.t1600-2-210.nwtelecom.ru (212.48.198.249) 12.520 ms
6 ae1.20g.t1600-1-mmt.nwtelecom.ru (212.48.194.98) 12.675 ms ae0.20g.t1600-1-210.nwtelecom.ru (212.48.198.254) 13.405 ms ae1.20g.t1600-1-mmt.nwtelecom.ru (212.48.194.98) 12.568 ms
ну вроде как вторую (:
Код: Выделить всё
$ cat 1.html
<
html
>
<body>ts
sss
</body></html>
$ w3m -dump 1.html
< html > ts sss
подтверждаю. у меня так же.
Код: Выделить всё
#!/bin/sed -rnf
# форматирование HTML, все теги собираются
# каждый в свою строку
# загрузка первой строки...
# удаление ведущих пробелов
s/^\s+//
/^</{
# данная строка начинается с тега
:tag
/>/{
s/^[^>]*>/\L&\n/
P
D
}
# строка содержит не целый тег
$ b error
N
s/\r?\n/ /
b tag
}
/</{
# строка не начинается с тега, но, однако, его содержит
s/\s*</\n</
P
D
}
# проверяем наличие символа > вне тегов
/>/ b error
s/\s+$//
# проверяем, не является-ли строка пустой, и печатаем её
/^$/! p
b
:error
s/.*/\x1b[31;1mErorr in line '&'\x1b[0m/p
q 77
/dev/random писал(а): ↑26.05.2010 06:25Слабо из регекспа понять, когда человек кавычку забыл закрыть, а когда знак ">" и должен находиться в кавычках?
/dev/random писал(а): ↑26.05.2010 06:25PCRE, правда, в отличие от классических регекспов, достаточно навороченные, чтобы написать на них безопасный парсер HTML, но такое выражение займёт несколько печатных страниц мелким шрифтом.
tt:~$ aptitude show sgrep | sed -n /Описание:/,//p
Описание: tool to search a file for structured pattern expressions.
Like grep, sgrep can be used for any kind of text files. However it is most useful for text files containing some kind of structured text. A file containing structured text could be defined as a file, which obeys some syntax.
Examples of structured text files are SGML, HTML, C, TeX and mail files.