тут такое дело нужна прога для того чтобы иправлять определеннве строки в определенных файлах, подумав решил что лучшим в данном случае языком будет perl начал в нем разбираться, но вот почему-то не работает у меня олператор замены s/// :(
вот конкретный пример:
#!/usr/bin/perl -w
open LOCAL,«+<./proba» or die «Can’t open file: $! \n» ;
while(){$l=s/ru+/try/;print «$l \n»;};
close;
в файле проба содержание типа
ljhljh
,n,nbm
ru
ghgjk
ru
hkjhk
ну и дальше белиберда ))
если в это примере есть ошибка то пожалуйста укажите её ( ну 2 дня уже сижу над 3 строками кода)
если нет то почему всетаки не меняется ru на try ?
З.Ы. извините за ошиьки, пишу одной рукой, вторая в гипсе))
З.З.Ы. нет ли под linux редактора типа средыы turbopascal или c++ от борланда под винду. не по теме конечно но все же
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
>> while(){$l=s/ru+/try/;print «$l \n»;}; >>
Мне кажется, что должно быть так:
while(){$l=~s/ru+/try/;print «$l \n»;};
Или даже вот так:
while(){$l=~s/(ru)+/try/;print «$l \n»;};
А еще лучше — вот так :-)
#!/usr/bin/perl -w
open LOCAL,«+<./proba» or die «Can’t open file: $! \n» ;
while(){
$l=$_;
$l=~s/ru+/try/;
print «$l \n»;
};
close;
Good Luck,
UT
Почему нет, есть. Source Navigator, Borland C builder, Emacs… :-)
Good Luck,
UT
ну а если вот так записать просто:
while(){s/(ru)+/try/;};
но всеравно ничего не переписываеися в файле, даже в ваших скриптах :((
этот же скрипт просто выводит файл на экран, и меняет значение , но он не записывает это в файл, конечно можно переписать в другой файл вывод, но хотелось бы В этом же файле сделать
наверное я идиот, но я бы писал на C. Хоть понятнее было бы…..
Вот эт точно…я почему-то тоже так подумал…:)
:) Всмысле что на C…
Нафиг. vim/emacs по вкусу.
К сожалению, того, что ты хочешь сделать нельзя (если я правильно понимаю, ты хочешь открыть файл, изменить его часть на месте и закрыть). Файл открывается для либо
чтения
полной перезаписи
добавления
и все. Редакторы грузят файл в буфер, ты редактируешь этот буфер, потом этот редактор пишет буфер поверх первоначального файла. В принципе, наверное, можно было бы менять то, на что указывает хэндл, но тебе пришлось бы спускаться на низкий уровень.
Отсюда вывод: Считывай файл в буффер (массив или там стрингу), редактируй ее и пиши поверх старого файла.
>> Нафиг. vim/emacs по вкусу.
Он спросил, что есть похожего на борланд, а не в чем я программирую… :-)
Good Luck,
UT
Проекты такого масштаба пишутся на том, на чем удобно их писать программисту. Вот если б он девайсный драйвер на перле рисовал, можно было бы удивиться…
Good Luck,
UT
файлы в перле могут быть открыты для изменения, по крайней мере так написано тв книге, просто там почему-то оператор s не работает :(
а так считывает и пишет.
но я уже дописал на основе последнего скрипта то что мне нужно было.
Я просто поставил linux slackware уже компов на 7 и каждый раз в ручную русифицировал :(
вот и решил написать скрипт для русификации)) вот кусок кода:
#!/usr/bin/perl -w
$filename;
$bilo;
$stalo;
$n=0;
sub ZAMENA {
$n++;
print «zamena »;
print «$n \n»;
open LOCAL,«<$filename» or die «Can’t open file: $! \n» ;
open LOCAL2,«>./proba2» or die «Can’t open file: $! \n» ;
while(){
$l=$_;
if($_!~/#/){$l=~s/$bilo/$stalo/;};
print LOCAL2 «$l»;
};
close LOCAL2;
close LOCAL;
unlink «$filename»;
rename «./proba2», «$filename»;
};
З.Ы. в перл я только начал разбираться (полрядка недели) так что и использую глобальные переменные. не нравится мне как он параметры в подпрограмму передает.
Не на shell же мне эти скрипты писать.
а если на Cях то компилить долбше))
З.З.Ы. А пока мне больше по душе emacs но что-то не то всеравно)), вот и пише пока в редакторе от mc, жаль мышь не поддерживает.
На shell, на shell. +sed.
Вполне себе поддерживает.
Просто он может быть откомпилен без этой поддержки.
Но vi все равно удобнее :)
И вообще, изменил бы файлы один раз и залил на все компы.
Ну, дело, конечно, хозяйское… :-) Вот тебе пищча для размышлений однако:
$ cat file1.txt
abra1
bylo2
cadabra3
$ sed -e ’s/bylo/stalo/ ' file1.txt > tempfile && mv tempfile file1.txt
$ cat file1.txt
abra1
stalo2
cadabra3
Good Luck,
UT
можно и на awk, кстати ;)
инструментов — море. главное определиться. ;)
все, уже сделал, правда коряво но должна работать, единствееное надо найти конфиг иксов от нерусифицированной системы, чтоб прописать настройки клавиатуры правильно
спасибо всем.