[ Навигация ]
· Главная
· Форум
· Cсылки
· Галерея
· Информация
· Поиск по сайту
· Самое популярное
· Файлы
· ЧаВО
· Энциклопедия

[ Поддержите нас! ]
Разместите у себя на сайте нашу кнопку.
Код кнопки

Глобальная корректура сабов
или раз два и дело в шляпе :)



Сегодня я расскажу как одной коммандой произвести сотню различных автозамен в тексте сабов.


Пришлось нам столкнуться с тем, что в различных сериях, переводчики использовали разные варианты написания имен и названий. И вот, серий накописоль достаточно, а духу сесть и подправить все вручную, никак не хватало.
Да что там вручную, даже пользуя автозамену Виндов, уколебаешься прогонять по сорок раз каждый файл.
Думал сначала написать макрос в Ворде, но потом плюнул на сие неблагодарное и неудобное дело.
Писать спец. программу для замены как-то не хотелось. Тем более, соглашение об именах могло измениться, а писать прогу на все случаи жизни чрезвычайно напряжно.
Как ни странно, дело спасла командная строка Unix, все оказалось настолько просто и элегантно, что я реализовал задуманое с огромным удавольствием и за считаные часы.
В Никсах есть такая штука, как потоковый редактор sed. Ему нужно лишь скормить нужный файл и небольшой скрипт, а на выходе получаешь искомый результат.

Вот как выглядит команда:

cat robotech01.srt|sed -f script.txt>robotech01_new.str
командой cat перенаправляем содержимое файла robotech01.srt на вход редактора sed, который использует скрипт script.txt для разбора и преобразования, а вывод направляется в файл robotech01_new.str
Вот как оформляются команды в скрипте: s/ - команда замены / разделено что на что заменять.
В строке подстановки используются регулярные выражения
[ ] отвечают за диапазон символа, [a-z] любая строчная буква латинского алфавита
* любое количество символов (имеется в виду символ стоящий перед звездочкой)
. один любой символ
\( \) последовательность заключенная в такие скобки запоминается, и может быть подставлена позднее как \№, где №-номер последовательности в строке.
Например здесь, я использую это, чтобы запомнить окончание слова и вставить его влсед за исправленным вариантом.
s/[Бб]р[ие]т.\([яюей]\)/Брите\1/

Общий формат команнды такой:
команда/то что меняем/то на что меняем

Подробнее ищите в сети "регулярные выражения" и редактор "sed"
А вот как выглядит файл скрипта:

s/[Гг]лов.л/Гловел/
s/[Лл]и[сз]\([ауеы]\)\([ \.,-?!:ауе]\)/ Лиc\1\2/
s/[Лл]и[сз]\(.[й]\)\([ \.,-?!:ауе]\)/ Лиc\1\2/
s/[Хх][еэ]йс/Хэйс/
s/[Хх][еэ]йтс/Хэйс/
s/ [Бб][эе]н\([ \.,-?!:ауе]\)/ Бэн\1/
s/[Мм]икрон[ие]ан/Микрониан/
s/[Кк]ла[ву]ди/Клауди/
s/[Вв]...тек/варитек/
s/[Зз]ентр.ди/Зентреди/
s/[Бб]р[ие]т.\([яюей]\)/Брите\1/
s/[ЭэЕе]кс[еэи]дор/Эксидор/
s/[Мм]акросс/Макрос/
s/ ро\([йяюе]\)\([ \.м?!,-:]\)/ Ро\1\2/
s/ рик\([оауе]\)\([ \.м?!,-:]\)/ Рик\1\2/
s/[Фф]окер/Фоккер/
s/[R][O][B][O][T].../РОБОТЕК/
s/роботек/Роботек/
s/[Лл]ин /Линн/
s/[Мм]инм.й/Минмей/

Ну разве это не удобно!?
И вся фишка в том, что если что-то будет решено изменить, достаточно будет сменить одну строчку скрипта и пропустить через него все файлы.

И последнее, где я взял Юникс?
Да на том же сервере где и хостинг.
В качестве терминала использовался patty.

А вообще-то, вам может помочь любой LiveCD с Линуксом, и инсталить не надо и Них под рукой.









Copyright © MACROSS CITY RUSSIA Все права защищены.

Опубликовано на: 2004-07-21 (6428 Прочтено)

[ Назад ]

© 2004-2017 Macross City Russia
Открытие страницы: 0.045 секунды