LINUX.ORG.RU

Возможно, опять помогите с sed

 , , ,


0

2

Всем привет!

Помогите написать простенький скрипт. Имеется директория, где куча html-файлов и внутри ещё директории, в которых тоже есть html-файлы. В их содержимом, есть url изображений. Я хочу их почистить от лишних символов, т.е. некоторые url имеют вид:

<img src="image.jpg?itok=6m2anSE2">

Хочу получить:

<img src="image.jpg">

И так с каждым url-изображений в каждом html файле.

Я так понимаю, что нужно использовать grep, sed и регулярные выражения?

По-моему wget это умеет сам?

html это не текст, с ним нельзя работать как с текстом инструментами предназначенными для текста.

То что мы семи-успешно применяем регулярки к вэбу, не значит что это корректное решение. Просто стоит это помнить.

anonymous ()
Ответ на: комментарий от anonymous

html это не текст

А что же это?

с ним нельзя работать как с текстом инструментами предназначенными для текста

А как же с ним по-вашему работают?

Zmicier ★★★★★ ()
Ответ на: комментарий от anonymous

с ним нельзя работать как с текстом

Кто запретил?

То что мы семи-успешно применяем регулярки к вэбу, не значит что это корректное решение.

Отыменна.

Не, ну если хочется заморочиться, можно погулять по дереву узлов в nokogiri, например. Но если sed не зацепляет лишнего, то зачем?

Deleted ()
Последнее исправление: Deleted (всего исправлений: 1)

нужно использовать grep, sed и регулярные выражения?

Нет, бог миловал, совершенно не обязательно использовать grep и sed.

Zmicier ★★★★★ ()

регулярные выражения?

Например:

$ cat 1.txt 
<img src="image.jpg?itok=6m2anSE2">
$ sed 's/\(<img src="[^"?]*\)\?[^"]*"/\1"/g' 1.txt 
<img src="image.jpg">

За точность не ручаюсь.

Deleted ()
Ответ на: комментарий от anonymous

Это текст в той же мере что и RTF.

Нет. MIME-application/rtf, но MIME-text/html

ashot ★★★ ()
Ответ на: комментарий от ashot

Это устаревшая информация, там теперь xml или вроде того.

anonymous ()

Ну, что-то похожее:

find . -type f  -print0 | xargs -0 -n 1 sed -i 's/\(\.\(jpg\|png|\gif\)\)?[a-z0-9\=]\+/\1/gi'
anonymous ()
Ответ на: комментарий от anonymous

Ой, ошибка. Вот так правильно.

find . -type f  -print0 | xargs -0 -n 1 sed -i 's/\(\.\(jpg\|png\|gif\)\)?[a-z0-9\=]\+/\1/gi'

anonymous ()
Ответ на: комментарий от anonymous

Это устаревшая информация, там теперь xml или вроде того.

Ты, скорее всего, путаешь с application/xhtml+xml

ashot ★★★ ()
Последнее исправление: ashot (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.