[Boyan] Массовое редактирование

Lenchans

Есть сайт (ну почти сайт) для просотра на наладоннике. Покетопера если не указано прямо, не выдает в русской кодировке. В списке предпочитаемых русской нет.
Соответственно во всех файлах нужно жестко указать "charset=1251" во всех хтмл-ках.
По идее нуно добавить во все файлы строку третьей по счету (может и не третьей, но формат одинаков для всей пачки файлов).
Вопрос - чем? Вроде есть такой софт, но как его звать? Поиск по словам "пакетное изменение" и пр. не помог.
Или как задать в покетопере принудительный русский?
ЗЫ Вынь, если что.

Marinavo_0507

sed
или perl

sinet

Массовая замена не устраивает?
Типа заменить <HEAD> на <HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">.
Заменять в каком-нибудь продвинутом редакторе.
К примеру Aditor.

Lenchans

Адитор неплох, но как бы в нем сразу открыть сотню файлов?

davidko

ctrl+a, перетащить. я штук по 50-60 редактировал, бывало.

sinet

Эм. Из TC, например, перетащить... Если файлы в разных каталогах Ctrl-B тебе в помощь.
Только не уверен, что Aditor 100 файлов осилит.

Geddi-S

sed
или perl
+1
даже если в лом линукс ставить, маленький цигвинчик установил и пользуешься всеми прелестями терминала в винде без вмваре, который жрет все ресурсы

Lenchans

О, кул. Помогло. Осилил 310 файликов, мелких правда
И на наладоннике работает.
СПасибо
ЗЫ А сед - это что?
sed.exe - пишет, что нельзя запустить.

Geddi-S

sed - потоковый редактор, очень хорошо работающий с регулярными выражениями. Не знаю, что ты имеешь в виду, но если sed.exe в cygwin - он у меня замечательно запускается

otets-mihail

sed отвратительный редактор

Lenchans

Ради того, чтобы заработала шняжка на 40 килобайт - ставить дуру на пару сотен мегов? нафик-нафик. Пока предпочитаю держаться поближе к винде.

otets-mihail

57.0 Kb
OFFLINE
[H]
в каком там классе должны арифметику учить?

a10063

вы просто не умеете их готовить ©

otets-mihail

он уже умеет заменять 'a\nb' => 'c\nd' ?

Lenchans

У меня sed.exe весит 39568 байт.
http://lorien.local/fastsearch.pl?restype=all&what=sed.e...

Marinavo_0507

кажется, да (GNU sed)
#!/bin/sed -nf

1h
2,${
H
x
s/a\nb/c\nd/
P
s/^.*\n//
x
}
${x
p
}

не претендую на оптимальность, только что открыл доку

otets-mihail

очень удобно

Marinavo_0507

ecли sed, то к нему ещё find нужен

otets-mihail

оно там тоже есть

a10063

очень удобно
можно проще
 sed -e '$!N;s/a\nb/c\nd/;P;D' 

но не суть
главное в том, что sed предоставляет много возможностей сделать одно и то же - т.е. в конечном итоге все равно добьешься цели, неважно, будет ли это решение красивым или не очень; все зависит от образа мышления
лаконичности можно достигнуть при частом использовании (это относится не только к sed)
offtop:
эта тема, на самом деле, показатель распространенного поведения
для того, чтобы экономить время в последствии, нужно сначала вложить настоящее время, а его жалко
а потом минуты, затраченные на поиски нового решения сходных задач, складываются в часы...
однако их трудно невооруженным взглядом отличить от рабочих минут, и человеку просто кажется, что у него остается мало свободного времени...

apl13

для того, чтобы экономить время в последствии, нужно сначала вложить настоящее время, а его жалко
а потом минуты, затраченные на поиски нового решения сходных задач, складываются в часы...
однако их трудно невооруженным взглядом отличить от рабочих минут, и человеку просто кажется, что у него остается мало свободного времени...
"Запомни, птичка: лучше полдня мануал почитать, потом за пять минут скрипт написать". (Почти с)

otets-mihail

Спасибо, запомню эти магические буковки
Все же я предпочитаю юзать в таких случаях перл, ибо мануал потом все равно забуду, а время жалко.
ЗЫ: впоследствии

Marinavo_0507

> можно проще
объясни такой эффект:
$ echo -ne "a\na\na\n" | sed -e '$!N;s/a/aa/g;P;D' 
aa
aaaa
aaaa

P.S.
сам понял уже, ну и жесть

a10063

Спасибо, запомню эти магические буковки

да тут ничего магического нет, особенно когда решение дано - достаточно понять идею, ее легко восстановить и видоизменить при надобности
а вот придумать решение иногда бывает непросто, особенно когда имеем дело с несколькими строками, т.к. sed в основном служит для построчной обработки
Все же я предпочитаю юзать в таких случаях перл, ибо мануал потом все равно забуду, а время жалко.

конечно, для сложной обработки лучше юзать перл
но я так понял, что sed позиционируется как очень быстрый редактор (в отличии от перл)
его сила в том, что он заведомо однопроходный, им можно обрабатывать большие объемы на приличной скорости
поэтому, когда решение почти очевидно, стараюсь использовать sed
ЗЫ: впоследствии

благодарю!

a10063

ну и жесть

конечно, когда a,b,c,d могут совпадать/пересекаться, надо улучшать алгоритм
имхо, на практике такое возникает редко

Marinavo_0507

И опять никто не запостил примера использования новомодного Monad...

Dasar

Так даже для sed-а до сих пор нет решения.
ps

result = string.Replace("a", "aa");

Marinavo_0507

Вставить 3-ю строку во всех *.html в текущей директории и её поддиректориях:

find . -name '*.html' -exec \
sed -e 3i'<meta http-equiv="Content-type" content="text/html; charset=windows-1251>' -i '{}' \;

a10063

И опять никто не запостил примера использования новомодного Monad...
а смысл?
решение будет похоже на решение на перле, по которому вопросов в треде не возникало и который превосходит монизм по многим параметрам (для подобных простых задач)

Marinavo_0507

а смысл?
было много шуму про то, как monad (и несколько других шняг, которые уже отменены) изменит мир
решение будет похоже на решение на перле, по которому вопросов в треде не возникало и который превосходит монизм по многим параметрам (для подобных простых задач)
теперь в стране мелкомягких скриптовый язык нужен для сложных задач?

a10063

было много шуму про то, как monad (и несколько других шняг, которые уже отменены) изменит мир

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

да не, я ничего против монад не имею
пусть себе пишут чего хотят...
я имел в виду, что у монады нет ощутимых преимуществ перед перлом на простых задачах, одни недостатки
а на сложных (быть может!) перл уступит ООП и прочим современным технологиям
m$, конечно, рассчитывает, что он будет применяться везде

Marinavo_0507

монад только вышел, а мир так быстро не меняется
ну хотя бы несколько форумчан должны были вспомнить про такой рулез без моей провокации?
всё-таки perl несколько чужероден для виндов

a10063

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

a10063

всё-таки perl несколько чужероден для виндов
ага, как и слово "массовое"

Lenchans

+1 за массовость.
По крайней мере в случае стандартых средств винды.
Оставить комментарий
Имя или ник:
Комментарий: