2009-08-03 4 views
1

В ситуации:Каков наилучший способ автоматизации замены текста?

У меня есть много файлов HTML, и эти файлы HTML ссылаются на большое количество документов. Все документы были переименованы. У меня есть лист Excel, который имеет старое имя файла и новое имя файла.

Что было бы самым быстрым способом изменить ссылки внутри HTML-файлов для размещения новых имен?

метода я использую сейчас: ли все HTML файлы, открытый в Notepad ++ Использование Notepad ++ 's „Заменить в функции Всех открытых документов“, чтобы заменить все вхождения определенной связи с новым именем файла.

Есть ли более быстрый, лучший способ?

+0

perl? Вы понимаете, что это сайт программирования, поэтому естественным ответом является «написать программу». Возможно, вы ищете суперпользователя? – derobert

+0

Я думал, что все «хорошие» разработчики - суперпользователи, они не пишут все с нуля, по крайней мере. –

ответ

1

Регулярные выражения Perl.

разработка: псевдокод

open up each file for read-only and read them into a list. 
close the files 
foreach element in the list 
#do the desired text replacement 
`s/$oldtext/$newtext/g`; 
open each file once more now for writing 
write out the new text. 

Это не сложно, но требует некоторого тестирования. Если у вас много изменений (и больше может случиться позже), это более эффективно.

+0

Уход за разработкой? :) – Nikko

+0

Это сработало. Я использовал PHP, но вместо Perl, и регулярные выражения не нужны. – Nikko

+0

+1 для regexp: s (независимо от того, используется ли он из perl или php) – Johan

0

Есть несколько инструментов, бесплатно и с открытым исходным кодом, заменяющие текст в нескольких файлах, один из открытых источников из них является FART

Если вы предпочитаете что-то с графическим интерфейсом, попробуйте бесплатную Text Crawler

+0

Будут ли эти решения требовать установки? Поскольку я делаю это для работы, установка чего-то на моем ПК не может быть и речи. – Nikko

+0

@Nikko: FART не требует установки, это просто исполняемый файл. –

0

First сохраните excel для чего-то приятного и простого, как csv-файл, поэтому его легко читать в вашем любимом языке, например perl. Итерации по каждому файлу и поиск и замена. Один из них, однако, состоит в том, чтобы сделать все за один проход, иначе вы могли бы создавать проблемы, если бы были ссылки, которые были изменены сложными способами. Т.е. если файл a.html изменен на b.html и b.html, измененный на a.html, вы можете испортить ссылки, если вы сделаете это за несколько проходов. Поэтому загрузите все изменения в память, затем выполните цикл через каждый файл и одновременно замените все ссылки.

Потому что именно HTML поиска и замены инструмента, как это было бы идеально:

http://www.aliassoftware.com/

Находит и заменяет несколько строк текста в нескольких файлах одновременно!