Мануал по find-replace для полного чайника
С QIP-а на Облака одним махом:
Грохнулся популярный сервис - объявил о закрытии, сотни блогерских страничек зияют прорезами вместо картинок.
Мало перенести архивы - нужно переписать все линки в постах.
Это реально.
В прежних экзерцисах мы изощрялись в автозамене кракозябр в линках на что-то вменяемое.
Но стараниями файлохранительных сервисов более востребованной становится замена одних кракозябр на другие.
Типа Облачных или тех же яндесовских.
Задача не тривиальная - переписать ссылки во всех постах, при хаотичной букво-цифири в адресах картинок.
Судя по прежним откликам, вариант с "заклинаниями", без пояснений, что откуда берется и почему,
не очень востребован. Те, кто заинтересовался, хотят разобраться в смысле производимых действий,
а не просто следовать готовому рецепту.
На этот раз попробуем начать "от сотворения мира".
Блокнот
Обычный виндозный. Notepad.
Вдруг кто-то
(С учетом регистра - "Match case")
Тоже кое-что может. Найти нужное и заменить более актуальным.
Напр. добавить соответствующие тэги ко всем ссылкам в тексте.
В два приема:
Найти: .jpg
Заменить на: .jpg.">
и
Найти: http://
Заменить на: <img src="http://
Уже не мало. Чем стопятьсот раз копи-пастить.
Примечание.
Опция "Вид" --> "Перенос по словам" в меню
или в англоязычии:
пригодится при копировании напр. исходных кодов,
которые Блокнот вытянет в одну строку, если не поставить галочку.
Функция поиска в браузере
ctrl + f
Ищет и на обычной странице, и в редактируемой форме записи (когда пост еще не отправлен) и на странице исходных кодов.
Массовую замену в браузере не сделаешь, но поиск тоже бывает весьма полезен, особенно в длинных текстах и кодах -
по известному слову легко выходить на искомый абзац.
◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘
Продвинутые Блокноты
Notepad++, AkelPad и.п.
Преобразования, чуть более изощренные, чем прямая замена, встречаются в задачах самых будничных и бесхитростных.
И в методах нет ничего непостижимого.
- Идею переменной никому ведь не надо объяснять. Классические иксы-игрики.
В Блокнотах-плюс подстановочные выражения используются для той же цели.
Как пример:
Изменить размеры картинок в кодах для вставки и убрать рамку.
<img src="httр://host-lost.cc/Gipegi/foto_10.j
<img src="httр://host-lost.cc/Gipegi/foto_11.j
<img src="httр://host-lost.cc/Gipegi/foto_12.j
<img src="httр://host-lost.cc/Gipegi/foto_15.j
<img src="httр://host-lost.cc/Gipegi/foto_36.j
Все значения разные, простого "найти и заменить" не достаточно.
Запишем тоже самое, но с переменными - подстановками, или,
как они в соответствующих редакторах называются - регулярными выражениями, reg_exp-ами
Найти: foto_(\d+)\.jpg" weight="\d+px" height="\d+px" border="\d+px"
Заменить на: foto_\1.jpg" weight="400px" height="600px" border="0"
\d+ - означает: в этой позиции находится одна или несколько цифр.
скобки(в данном случае) - выражению надлежит быть сохраненным для последующего использования.
\1 - вставить содержимое первых скобок.
Получаем:
Или знакомое по прежним встречам с автозаменой упражнение - отредактировать адреса с абракадаброй:
допустим, решили убить активные ссылки, которые любят подсовывать к кодам некоторые сервисы:
<a href="httр://yafot/Kt0_TebYa_ProsI/l_689.n
<a href="httр://yafot/Kt0_TebYa_ProsI/t_697.n
.... и в таком духе.
Удалить закрывающие </a> легко: строку "Заменить на:" оставить пустой.
Но с первой частью выражений стандартному блокноту никак не справиться - абракадабры разные.
С "переменными" -- все просто:
командой: "Убрать всё между <a href и следующей закрывающей угловой скобкой. Включительно."
Найти: <a href="httр://yafot/\w+/w_\d+\.net"><img src="httр://yand_fota/(\w+)\.jpg"></a>
(\w+ - латинская буква, цифра или знак подчеркивания, одна или несколько)
Заменить на: <img src="httр://yand_fota/\1.jpg">
World такое тоже умеет, формат написания подстановочных выражений у разных программ отличается,
есть несколько версий, но суть та же. Один раз освоишь - разберешься и с другими;
смотришь в подсказки, где какие символы в ходу, наизусть запоминать не обязательно.
Это было краткое повторение пройденного.
◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘
Групповые преобразования файлов
Зыбкая природа сетевых обиталищ подкидывает проблемы, которые с наскока не решить,
даже вооружившись "рег-экспами".
Недавние советы по переселению фотоархива на новый ресурс содержали непременное условие -
выберите тот, который сохраняет имена файлов; где линки будут иметь предсказуемый вид.
Увы. Таких практически не осталось - чтоб и целым архивом залить и новые ссылки выгрузить разом.
Выбирать приходится из возможного. Среди возможного несколько доступных Облачных сервисов и Я-фотки.
Одно крокозябрей другого.
Т.е. обе стороны соотношения "Заменить что:" -- "Заменить чем:" содержат неизвестные. Типа Х+Y=>a+b
Возьмем самый тяжелый случай, Яндекс-фото -
дает файлам имена вне какой-либо связи с исходными именами картинок
(на мой взгляд переезжать на Я-ф - менять шило на мыло в смысле надежности,
но многих привлекает привычный интерфейс, не ограничено места и, главное -
адреса можно получить пакетом, а не выковыривать по одному).
Пучок невнятных ссылок нужно расставить по текстам давних постов -
труднопредставимо каким образом это делать даже в ручную, сверять каждую с изображением? 0_о
Тем интересней, чем неразрешимей )
Нужен более мощный инструмент, чем Блокноты, даже расширенные.
И такой инструмент есть: UV FilesCorrector
Много чего делает на тему "Найти и заменить", с регулярными выражениями, если надо.
Только выражений для замены может быть не одно, как в Акел-паде, а несколько -тысяч.
Например понадобилось во всех каталогах и подкаталогах перебить цены,
заменить
руб. - Р
у.е. - $
евр. - €
шек.- ₪
юань - 圓
....
Жмем в меню "Добавить", вносим одну за другой пары - что на что меняем и
получаем список замен столбиком (который можно "Загрузить" - сохранив на следующий раз):
А кроме того, сами исправляемые тексты не требуется никуда копипастить, вставлять в программу -
нужно просто указать ей путь к файлу. Или к каталогу с файлами и они, при необходимости,
будут исправлены все разом.
В случае ЖЖ не придется переносить записи в локальные папки. Достаточно открыть пост
в режиме редактирования. Программа исправит все линки в выделенном текcте - прямо в браузере.
Для чего ее, конечно, следует соответствующим образом настроить: задать список замен.
Поменять адреса вида
"httр://photo.qip.ru/photo/seкaphoto/200
на
"httрs://img-fotki.yandex.ru/get/6305/11
даже и с усиленным инструментарием - проблема. Но преодолимая.
Вернемся к Яндексу. В таком виде как он выдает ссылки - случай безнадежный.
Но есть способ связать полученные имена с исходными - присмотритесь,
по наведению мыши превьюшки показывают всплывающую подсказку - с родным именем картинки! "титлы" те самые.
А чтоб извлечь их - не поленимся залезть на страницу исходных кодов. ctrl+U
Не так все страшно. Вот он искомый фрагмент (начиная со слов "Выделить фотографии:")
Составим команду для извлечения нужных кодов из этой каши:
Найти: (httрs://img-fotki(.(?!XS))*)_XS"\s\S*\s\S*
(Найди череду символов, начинающуюся с httрs://img-fotki - после которых идет какой угодно символ (.) сколько угодно раз (*), кроме такого, за которым стоит XS; дальше найди _XS" пробел (\s), несколько символов не являющихся пробелом (\S*), еще раз (\s\S*\s ) и
группу из alt=", одной или нескольких букв/цифр (w+) с расширениями на выбор; дальше найди сколько угодно каких угодно символов (.), пока не наткнешься на такой, за которым стоит ttрs (?!) )
Если к составляемым reg_exp-выражениям не делать комментариев - уже через пару недель будет не разобрать, что там к чему
Заменить на: \1_orig.jpg \3\n
(Запомни содержимое первой и третьей скобок (внутренние считаются (кроме тех, что входят в шаблон с "?!")) и припиши к нему _orig.jpg, в конце сделай перевод строки (\n))
Получаем очищенный список, в "alt-ах" - прежние номера фот,
связывающие новые адреса с теми, что уже используются в постах
httрs://img-fotki.yandex.ru/get/6305/110
httрs://img-fotki.yandex.ru/get/6210/110
httрs://img-fotki.yandex.ru/get/6311/110
httрs://img-fotki.yandex.ru/get/6309/110
httрs://img-fotki.yandex.ru/get/6308/110
httрs://img-fotki.yandex.ru/get/6111/110
httрs://img-fotki.yandex.ru/get/6306/110
httрs://img-fotki.yandex.ru/get/6306/110
httрs://img-fotki.yandex.ru/get/6211/110
httрs://img-fotki.yandex.ru/get/6305/110
httрs://img-fotki.yandex.ru/get/6212/110
Нам нужно произвести замену выражения перед заданным именем
вместо httр://photo.qip.ru/photo/seкaphoto/2009
вписать httрs://img-fotki.yandex.ru/get/6305/110
Даже хитрых подстановочных выражений не нужно.
Беда, что таких операций требуется несколько десятков(/тысяч).
Программа-корректор с этим прекрасно справится,
нужно только скормить ей специально подготовленный файл со списком замен -
вроде такого:
<?xml version="1.0" encoding="windows-1251"?>
<List xml:space="preserve">
<Item> <Find>abra</Find> <Replace>kadabra</Replace> <Checked>1</Checked> </Item>
<Item> <Find>tyry</Find> <Replace>pyry</Replace> <Checked>1</Checked> </Item>
<Item> <Find>klin</Find> <Replace>blin</Replace> <Checked>1</Checked> </Item>
<Item> <Find>pryg</Find> <Replace>skok</Replace> <Checked>1</Checked> </Item>
</List>
И так пятьдесят тысяч раз.
- знакомые Find и Replace, только в программных кодах.
регулярки AkelPad-овские у нас под рукой, придать списку ссылок нужное для программы обрамление не долго:
Найти: (httрs://img-fotki.*) (alt="(\d+)\.(jpg|gif)")
-найти имя джипега/гифа (\d+) перед которым стоит выражение с httрs: , еще кучей символов и alt="
Заменить на: <item><find>"httр://photo.qip.ru/photo/s
-заменить то, что перед номером картинки (скобка №3, считая вложенные) на выражение
<item><find>httр://photo.qip.... и прочая, и в указанное место вставить саму исходную строку (первая скобка)
(Тут и пригодились alt-ы с номерами картинок, чтоб связать новые адреса со старыми.
Иначе пришлось бы отслеживать порядок загрузки и мутить с нумерацией списка.)
Список замен готов.
Сохраните полученный файл в Акел-Паде с расширением .lst (все файлы) в кодировке 1251 ANSI-Cyrillic.
Запомните путь к файлу(в какую папку положили), что бы открыть его в FileCorrector-е.
(Замены и собственно F-Corrector проделает с не меньшим успехом,
но физически текст должен где-то находиться; можно набрать его Блокноте, а подстановки запустить из FC)
Всё готово, открываем сохраненный список уже из самой программы (кнопка "Добавить из файла") ,
заходим в нужный пост (удобнее всего из "управления записями" вверху ЖЖ-страницы)
--> ctrl A --> Ctrl + Shift + X и вуаля!
Т.е. выделили текст поста, нажали сочетание Ctrl + Shift + X (при запущенной программе uFC, разумеется)
- имеем результат:
Не совсем одним махом получилось, в три прыжка, но все ж таки обозримый объем работы,
без автоматизации вовсе неподъемный.
Примечание.
Если весь архив скинуть в одну папку на Я-фото - коды для исправления будут более единообразны,
в qip-ких адресах аналогично, если фоты хранились в разных альбомах, следует учесть это при составлении списка замен:
httр://photo.qip.ru/photo/куshi/200703298/large/213216821.jpg
httр://photo.qip.ru/photo/куshi/200683461/large/211744274.jpg
Индекс папки из девяти цифр обозначим переменной:
httр://photo.qip.ru/photo/куshi/\d+/large/211744274.jpg
....... ....... ....... ....... ....... ....... ....... ....... .......
- Обязательно файл вручную конструировать, автоматом программа этого не делает?
- Делает, если пары "что" -" чем" вносить через вкладку "Добавить" - по одной, и запомнить полученное в файл.
Загрузить список - только вот таким способом.
◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘
Лирика
Есть два принципа работы в неосвоенной области.
Метод "тупо проделать то, что описано в инструкции" не так плох, как может показаться.
Приложений и устройств всё больше, досконально разобраться во всем невозможно. И наперед не известно -
стоит ли; если утилита нужна для разовой операции - включаем и едем, а как оно устроено, не докапываемся.
Минус такого подхода в том, что если что-то пойдет не как надо, то не будешь знать в чем загвоздка,
на любой ерунде можно споткнуться. В Справке есть далеко не все, а мануалов не густо.
Но может и повезти - "попробуй и получится, а если не получится попробуешь опять" =)
Например встречается ситуация:
-Я проделал Ctrl + Shift + X , а пост превратился в закорючки! ..?
-В жж-шной форме редактирования бывают накладки. Видимо операция применялась к тексту,
который прежде уже находился в буфере, выход - чистить буфер перед новой операцией.
Неувязки возможны, но откатить просто -
вернуться на страницу журнала, пост останется неотредактированным, в первозданном состоянии;
нажимать "Сохранить запись" стоит только убедившись, что с текстом все в порядке.
Если же иметь дело с текстовыми материалами, правками и заменами предполагается часто и регулярно,
то, конечно, нет ничего лучше, чем освоить и настроить под себя удобный, функциональный инструмент.
"Непонятное" по большей части оказывается неизвестным.
Как при изучении языка: встретил новое слово - смотришь в словаре.
Наткнувшись на какой-нибудь "нежадный поиск" -
у Гугла что оно такое. Обнаруживается интересная штука, полезная.
Бывает еще типа третий метод, как у
скажем, юзер не понимает разницы между кодом для вставки и именем файла -
но не роется в справочнике и не повторяет шаг за шагом готовый рецепт,
а с ходу принимается спорить: "а там не то, там вот это!", "но я не понимаю, тут так не получится".
На случай, если - что так, что эдак: никак, самый верный путь - попросить кого-то, кто хоть как-то.
◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘ * ◘◘◘◘◘◘
Эквилибристика автозамены в более ранних постах:
Запасной аэродром для фоток с Яндекса
Групповые преобразования в ЖЖ
GRAB'им фликр, гугло-пикасу + обзор фото-хостов
Прогулка по Облакам. Обзор
← Ctrl ← Alt
Ctrl → Alt →
← Ctrl ← Alt
Ctrl → Alt →