Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [bash] Извличение html тегов 
V
    Опции темы
Ak47black
  Дата 2.10.2010, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



Здравствуйте.
Есть следующий код
который находит и выводит все html <h?> теги, сдвигая используя n-ую табуляцию в зависимости от номера тега
Код

#!/bin/bash
FILENAME="test.html"

for ((i=1; i <= 6 ; i++))
do
    VALUE=`sed -n -e "s/.*<h$i>\(.*\)<\/h$i>.*/\1/p" $FILENAME`
    if [ "$VALUE" != "" ]
    then
        for ((e=1; e < $i ; e++))
        do
            VALUE="\t$VALUE"
        done
        echo -e $VALUE
    fi    
done
rm -f $FILENAME

Но мне надо переделать этот код так что-бы он выводил теги отдельно и по порядку.
(тестовый файл в архиве)
Сам результат обработки тестового файла должен выглядеть вот так
Код

<html><head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
</head><body>

<h1>1 heading</h1>
<h2>1.1 heading</h2>
<h3>1.1.1 heading</h3>
<h3>1.1.2 heading</h3>
<h4>1.1.2.1 heading</h4>
<h5>1.1.2.1.1 heading</h5>
<h6>1.1.2.1.1.1 heading</h6>
<h6>1.1.2.1.1.2
    heading</h6>
<!-- comment --><h5>1.1.2.1.2 heading</h5>
<h4>1.1.2.2 heading</h4><!-- comment -->
<h3>1.1.3 heading</h3>
<h2>1.2 heading</h2>
<h1>2 heading</h1>

</body></html>

Цитата

1 heading
 1.1 heading
  1.1.1 heading
    1.1.2 heading
     1.1.2.1 heading
      1.1.2.1.1 heading
       1.1.2.1.1.1 heading
      1.1.2.1.1.2 heading
     1.1.2.1.2 heading
    1.1.2.2 heading
   1.1.3 heading
  1.2 heading
2 heading

Можно-ли как добавлять символы табуляции в regular expresions?

Это сообщение отредактировал(а) Ak47black - 2.10.2010, 19:43
PM MAIL   Вверх
JackYF
Дата 2.10.2010, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 14
Всего: 162



Цитата(Ak47black @  2.10.2010,  18:38 Найти цитируемый пост)
Можно-ли как добавлять символы табуляции в regular expresions?

конечно, '\t', как и в других местах


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Ak47black
Дата 2.10.2010, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



Пардон, я немного по детальней хочу узнать.
Можно-ли как-то извлечь число из тега <hn>, где n - число и добавить n-ое количество табуляций по нему что-бы сделать n-ый отступ?
Тоесть с регулярными выражениями это всё дело сделать?

Это сообщение отредактировал(а) Ak47black - 2.10.2010, 21:28
PM MAIL   Вверх
Ak47black
Дата 3.10.2010, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



Никто совсем ничего незнает как это дело можно сделать?
PM MAIL   Вверх
Ak47black
Дата 3.10.2010, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



Как хотя-бы вытащить вот такой вот текст
Цитата

1 heading
1.1 heading
1.1.1 heading
1.1.2 heading
1.1.2.1 heading
1.1.2.1.1 heading
1.1.2.1.1.1 heading
1.1.2.1.1.2 heading
1.1.2.1.2 heading
1.1.2.2 heading
1.1.3 heading
1.2 heading
2 heading

??
PM MAIL   Вверх
djamshud
Дата 3.10.2010, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 14
Всего: 39



awk, по идее, должен уметь это.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Ak47black
Дата 3.10.2010, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



Вот такой код получил,
Код

sed -n -e 's/.*<h.>\(.*\)<\/h.>.*/\1/p' test.htm | while read line; do
    echo $line;
done

который печатает
Цитата

1 heading
1.1 heading
1.1.1 heading
1.1.2 heading
1.1.2.1 heading
1.1.2.1.1 heading
1.1.2.1.1.1 heading
1.1.2.1.1.2 heading
1.1.2.1.2 heading
1.1.2.2 heading
1.1.3 heading
1.2 heading
2 heading

Но, а как мне сделать так что-бы я имел переменную число на сколько у меня нужно сдвинуть в внутри цикла?

Это сообщение отредактировал(а) Ak47black - 3.10.2010, 15:28
PM MAIL   Вверх
JackYF
Дата 3.10.2010, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 14
Всего: 162



Цитата(Ak47black @  3.10.2010,  14:26 Найти цитируемый пост)
так что-бы я имел переменную число на сколько у меня нужно сдвинуть в внутри цикла? 

Возьми и посчитай количество точек в строке. Можно даже без регулярного выражения. В чём проблема-то?


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Ak47black
Дата 3.10.2010, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



Это только тестовый пример.
Тоесть точки ничего не значат

Добавлено через 1 минуту и 20 секунд
Я могу например сделать
Код

sed -n -e 's/.*<h\(.*\)>\(.*\)<\/h.>.*/\1\2/p' test.htm | while read line; do
    echo $line;
done

Тогда получу
Цитата

11 heading
21.1 heading
31.1.1 heading
31.1.2 heading
41.1.2.1 heading
51.1.2.1.1 heading
61.1.2.1.1.1 heading
51.1.2.1.2 heading
41.1.2.2 heading
31.1.3 heading
21.2 heading
12 heading

Но как теперь разделить и получить их по отдельности?

Добавлено через 1 минуту и 46 секунд
Тоесть само число и строку внутри цикла?

Это сообщение отредактировал(а) Ak47black - 3.10.2010, 15:33
PM MAIL   Вверх
Ak47black
Дата 3.10.2010, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



эххх тишина ...  smile 
Напишите кто-нибудь очень жду ответа
PM MAIL   Вверх
Ak47black
Дата 3.10.2010, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



Уже понял как
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
nerezus

В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
Например вопросы о выборе ОС для определенных задач (но если Вы просто хотите узнать "Какой дистрибутив лучше", то для этого есть Клуб юнуксоидов).
Общие вопросы по shell-программированию тоже лучше задавать здесь.


  • Вопросы мобильной разработки тут
  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0696 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.