Здравствуйте.
Есть файл index.html, с него нужно извлечь ссылки.
Все регулярки sed -в одном фале, для чистоты кода.
cat index.html | sed -nrf contpost_2.sed
contpost_2.sed
#!/bin/sed
# Разделение тегов на строки.
s/</\n</g
# Извлечение всех тегов img
# там знаки равенства и подчёркивания - для отладки
s|((.*<img[^>]*>)+.*)+|=\2_\n|gp
На выходе:
=
<img width="200" height="150" class="alignleft size-full wp-image-10" alt="Бальзамин" src="/media/balzamin2.jpg" />_
=
<img width="250" height="198" class="alignleft size-full wp-image-10" alt="Бальзамин" src="/media/balzamin-uollera.jpg" />
<img width="200" height="200" class="alignright size-full wp-image-10" alt="Бальзамин" src="/media/balzamin-fiesta.jpg" />_
=
<img width="250" height="174" class="alignleft size-full wp-image-10" alt="Бальзамин" src="/media/balzamin3.jpg" />_
=Семена высевают в феврале,прорастают через 10-15 дней, зацветают через 3-4 месяца.
<img width="250" height="168" class="alignright size-full wp-image-10" src="/media/balzamin4.jpg" alt="Бальзамин" />_
Здесь он 2 и 3 рисунки выдал как 1 строчку. Если это отфильтровать через grep:
cat index.html | sed -nrf contpost_2.sed | grep img
Вывод:
<img width="200" height="150" class="alignleft size-full wp-image-10" alt="Бальзамин" src="/media/balzamin2.jpg" />_
<img width="250" height="198" class="alignleft size-full wp-image-10" alt="Бальзамин" src="/media/balzamin-uollera.jpg" />
<img width="200" height="200" class="alignright size-full wp-image-10" alt="Бальзамин" src="/media/balzamin-fiesta.jpg" />_
<img width="250" height="174" class="alignleft size-full wp-image-10" alt="Бальзамин" src="/media/balzamin3.jpg" />_
<img width="250" height="168" class="alignright size-full wp-image-10" src="/media/balzamin4.jpg" alt="Бальзамин" />_
рисунки нормально разделятся.
Но здесь же видно, что второй и третий слеплены, (подчёркивание справа)
В исходном html файле второй и третий рисунки одной строчкой идут. Для этого вначале разделил все теги переводом строки.
Все попытки вывернуть пути src с img заканчивались тем, что второго нет.
спасибо
Пользователь решил продолжить мысль 29 Июля 2014, 11:39:01:
То же самое другим методом.
cat index.html | sed "s/</\n</g" | sed -rn 's|.*(<img[^>]*>).*|\1|gp'
На выходе 5 ссылок:
<img width="200" height="150" class="alignleft size-full wp-image-10" alt="Бальзамин" src="/media/balzamin2.jpg" />
<img width="250" height="198" class="alignleft size-full wp-image-10" alt="Бальзамин" src="/media/balzamin-uollera.jpg" />
<img width="200" height="200" class="alignright size-full wp-image-10" alt="Бальзамин" src="/media/balzamin-fiesta.jpg" />
<img width="250" height="174" class="alignleft size-full wp-image-10" alt="Бальзамин" src="/media/balzamin3.jpg" />
<img width="250" height="168" class="alignright size-full wp-image-10" src="/media/balzamin4.jpg" alt="Бальзамин" />
То же самое, но в скрипте:
cat index.html | sed -nrf contpost_2.sed
код contpost_2.sed:
s/</\n</g
s|.*(<img[^>]*>).*|\1|gp
На выходе уже 4 ссылки:
<img width="200" height="150" class="alignleft size-full wp-image-10" alt="Бальзамин" src="/media/balzamin2.jpg" />
<img width="200" height="200" class="alignright size-full wp-image-10" alt="Бальзамин" src="/media/balzamin-fiesta.jpg" />
<img width="250" height="174" class="alignleft size-full wp-image-10" alt="Бальзамин" src="/media/balzamin3.jpg" />
<img width="250" height="168" class="alignright size-full wp-image-10" src="/media/balzamin4.jpg" alt="Бальзамин" />
Потерялась вторая
Вот разница лишь в том, что код SED поместил в файл. Что за....?