Скриптинг для чайников. Научите

leonard45

Имеется некий текстовый файл. Вернее он даже в некотором роде xml, но не суть важно.
В нем, помимо кучи всякой фигни, встречаются некие цифры, над которыми необходимо произвести несложные арифметические операции и сохранить потом файл "как так и было". Если я правильно понимаю, обычно крутые чуваки такое делают с помощью скрипта на каком-нибудь перле или любом другом языке, который окажется под рукой на котором умеет. Так вот, времени устанавливать и ботать перл сейчас у меня нет совершенно. Зато есть некоторые зайчатки знаний программизма, регулярных выражений и проч. В смысле, в похожих ситуациях я часто справлялся с помощю ворда (:grin:): записывал какой-нибудь макрос простейший, чтобы рюхнуть синтаксис, а потом допиливал напильником до состояния, которое удовлетворило бы мои потребности. Но тут фишка не прокатила, т.к. скотина-ворд после этого пересохраняет этот файл в дебильном своем формате, из-за чего он утрачивает свою работоспособность. Ну и вообще не уверен, что в текстовых редакторах макросами можно совершать математические действия.
Подозреваю, что вижуал бейсик тут мне мог бы помочь, но я вот даже не представляю, как его запустить без ворда и проч.
Собственно ищется какой-нибудь простейший путь, по идеологии максимально близкий к описанному выше: т.е. взять какую-нить прогу с возможностью зафигачить туда макрос простейшей замены, плюс к тому добавить ручками туда пару формул. И чтобы сохраняла норм в юникоде, без лишней самодеятельности в виде добавления всяких метаданных, удаления "лишнего" или исправления переносов строк. У меня винда есличо. Файл в юникоде, если вдруг важно.
Вощем посоветуйте че-нибудь :D Ну или наставьте на путь истинный

juliuzz

заботай перл, хуле
вот этого дока тебе должно хватить

Dimon89

Вернее он даже в некотором роде xml
Если он xml, то тебе наверное xslt стоит заботать.

durka82

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

А сохранить как текст не помогает?
Но вообще конечно текстовые файлы надо текстовыми же редакторами и редактировать.
Может оказаться, что текстового редактора с продвинутой поддержкой регулярных выражений может и хватить, но вот не помню, можно ли там совершать несложные арифметические операции (в EditPade похоже нельзя). Есть более сдвинутый на работу с регвыражениями RegexBuddy (там вроде даже синтаксис перла поддерживается но тоже не уверен, что он это умеет.

alekc34

в экселе тоже макросы можно писать

yroslavasako

можно попробовать заботать какой-нибудь продвинутый редактор, вроде имакса. Заодно там и свой скриптовый язык есть

apl13

Поставь MSYS или цигвин, там будет awk.

Fragaria

Давно бы выложил файл и описание что сделать надо - тебе бы тут уже штук 5 вариантов скриптов от нефиг делать накидали.

elenangel

еще бы и холивар разгорелся по поводу какой скрипт более Ъ.

zloDEY

у него небось в налоговой отчетности все циферки уполовинить нужно
так он и выложит

elenangel

ну можно же "рыбу" выложить, тру-скрипт обрабатывает не конкретный файл, а любой файл с подходящими тегами.

leonard45

асиливаю перл, получаетцо вроде
вопрос: Как напечатать в файл строку, в которой помимо буков есть цыфры, но штоб при этом у цыфр было строго определенное кол-во знаков после запетой?

Argument "sdfsdf 4500 sdgfsdgfsd" isn't numeric in sprintf at

margadon

printf("%.5f", 0.234235345345); подойдёт?

leonard45

printf("%.5f", "blablabla 0.234235345345"); подошло бы
но не работает:(

margadon

printf("blablabla %.5f", 0.234235345345); должно подойти
но вообще я бы распарсил регэкспами строку, найдя там все числа и их на месте прям видоизменил

leonard45

а если "blabla 0.23424234 blabla blabla 0.34534543 blabla"? :grin:
была мысль регэкспами все это еще раз причесывать. Думал, может человеческий способ есть

leonard45

ае! покурил мануалы еще чуток и словил приход наконец :grin:
у тебя все правильно написано, только мне sprintf нужна была, оказывается
вдогонку еще вопрос: Можно ли задавать в скрипте не абсолютный путь к файлу, а относительный относительно самого скрипта? :grin:

hiper-hoper

относительный относительно самого скрипта?
man $0, man dirname

spensnp

в экселе тоже макросы можно писать
65,536
АХАХАХАХАХАХА

Bibi

если хочется, чтобы это работало и не зависело от того, откуда запускается скрипт, то надо использовать FindBin

dgaf

>man $0, man dirname
А, например, в PS предлагается
Split-Path -Path $MyInvocation.MyCommand.Path -Parent
Оставить комментарий
Имя или ник:
Комментарий: