Как сохранить нужную строку - ссылку

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

astrolit
Сообщения: 42
Зарегистрирован: Чт июл 26, 2012 05:49

Как сохранить нужную строку - ссылку

Сообщение astrolit »

есть файл htm, в нём интересует только пару строк
остольное не нужно.
можно ли по маске указать как выглядит ссылка, чтоб только такого рода
строки сохранились, пример ссылок

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

../../../../../icache/photos/66/2391/7899/126258_740x550.jpg
../../../../../icache/photos/100/3000/7517/826333_740x550.jpg
файлов около 5000 - ручками очн. тяжело
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

1) скачать и распаковать ssed http://sed.sourceforge.net/grabbag/ssed/
2) в ком.строке выполнить

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

type *.htm |ssed -R -n s/.*((\.\.\/){5}icache\/photos\/[\d\/]+_740x550\.jpg).*/\1/p >imgs.lst
astrolit
Сообщения: 42
Зарегистрирован: Чт июл 26, 2012 05:49

Сообщение astrolit »

скачал, распаковал ssed.exe на рабочем столе, далее не понятно во первых cmd выскакивает, и сразу исчезает. да имне нужно под тотал команд, так как файлы у меня лежат в подпапках и открываю список с ними через ctrl +B
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

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

@echo off &setlocal enableextensions
::	Параметры: "%WL"

for /f "delims=" %%f in ('type "%~1"') do (
>>imgs.lst ssed.exe -R -n "s/.*((\.\.\/){5}icache\/photos\/[\d\/]+_740x550\.jpg).*/\1/p" "%%f"
)
сохрани как .CMD, повесь на кнопку, пропиши параметры


ssed распакуй в папку, прописанную в %Path%


*список будет дополняться
astrolit
Сообщения: 42
Зарегистрирован: Чт июл 26, 2012 05:49

Сообщение astrolit »

ок спасиБо!!! заработало
astrolit
Сообщения: 42
Зарегистрирован: Чт июл 26, 2012 05:49

Сообщение astrolit »

уж очень медленно - за 9 часов только 20 000 ссылок из 89 000
astrolit
Сообщения: 42
Зарегистрирован: Чт июл 26, 2012 05:49

Сообщение astrolit »

а как оформить запись вашей строки с регулярным вырожением
если после слова photos/ мне, скажем, не надо перебирать все возможные комбинации трехзначного числа а лишь 4, скажем 100,75, 16, 112, ну
к примеру

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

../../../../../icache/photos/66/2391/7899/126258_740x550.jpg не подходит
../../../../../icache/photos/100/3000/7517/826333_740x550.jpg подходит
../../../../../icache/photos/75/3120/5617/123453_740x550.jpg подходит
../../../../../icache/photos/16/3444/4377/867443_740x550.jpg подходит
../../../../../icache/photos/112/6777/20155/176993_740x550.jpg подходит
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

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

>>imgs.lst ssed.exe -R -n "s/.*((\.\.\/){5}icache\/photos\/(75|1(6|00|12))\/[\d\/]+_740x550\.jpg).*/\1/p" "%%f"
astrolit
Сообщения: 42
Зарегистрирован: Чт июл 26, 2012 05:49

Сообщение astrolit »

а можно по подробнее о конструкции /(75|1(6|00|12))\
дело в том, что цифры могут меняться к примеру сейчас я перебираю 12,71,83,100

Добавлено спустя 55 минут:

C:\silk>type *.htm |ssed -R -n s/.*(hotel_photos\/(75|1(6|00|12))\/[\d\/]+_740x5
50\.jpg).*/\1/p >imgs.lst
"1" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

astrolit
А что тут подробней? Варианты описываются в справке TC по регулярным выражениям и не только. Здесь берётся двойная вариация (75 и то, что после единицы). 1(6|00|12) = (16|100|112)
Прямой слеш тут определяется по Esc-последовательности.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

просто (12|71|83|100)
кратко регулярные выражения описаны в справке TotalCommander
Добавлено спустя 55 минут:
это была исправленная строка для батника
Последний раз редактировалось Tol!k Сб июл 28, 2012 23:03, всего редактировалось 1 раз.
astrolit
Сообщения: 42
Зарегистрирован: Чт июл 26, 2012 05:49

Сообщение astrolit »

да с этим я разобрался, но очевидно же написал ошика!!!
"1" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
точно также выдал ошику когда я записал

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

type *.htm |ssed -R -n s/.*(hotel_photos\/(12|71|83|100))\/[\d\/]+_740x5
50\.jpg).*/\1/p >imgs.lst
"71" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

Добавлено спустя 4 минуты:

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

Microsoft Windows XP [Версия 5.1.2600]
(С) Корпорация Майкрософт, 1985-2001.

C:\silk>type *.htm |ssed -R -n s/.*(hotel_photos\/(12|71|83|100))\/[\d\/]+_740x5

"71" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

C:\silk>
Последний раз редактировалось astrolit Сб июл 28, 2012 23:22, всего редактировалось 1 раз.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

лишняя скобка "))"
astrolit
Сообщения: 42
Зарегистрирован: Чт июл 26, 2012 05:49

Сообщение astrolit »

батник у меня не вкакую не работает - кнопка есть, cmd батник ваш висит параметры прописаны ssed.exe лежит с вскрытыми файлами, просто мигает курсор,
оъединив 20 000 страниц в одну обращаюсь к ней через первый предложенный вами вариант

Добавлено спустя 54 секунды:

как лишняя левых же две 8(
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

пользуйтесь тегом [code][/code]
Ответить