fims7 Posted October 23, 2014 Share Posted October 23, 2014 Добрый день. Возник вопрос как из некорректного фала трека, сделать корректный. Имею файл 2012_05_30_gps.plt записанный старой доброй Nokia с СГ версии 7.2.32. Раньше думал что это версия не пишет треки, а на днях обнаружил что у меня есть куча треков записанных ей, но как оказалось в них есть ошибка, координаты разделются не точкой и запятой и еще одно число (выделил жирным). В общем нужно в этом файле эти три запятые заменить на точки, есть ли способ и идеz как это можно автоматизировать, то есть делать не руками, а программно? Пример трека: OziExplorer Track Point File Version 2.1 WGS 84 Altitude is in Feet Reserved 3 0,2,255,2012_05_30_gps.plt,0,0,0,255 0 59,756850,31,068454,0,0,41059,1655671,2012-05-30,07-58-25 59,756852,31,068458,0,0,41059,1655903,2012-05-30,07-58-27 59,756853,31,068459,0,0,41059,1656019,2012-05-30,07-58-28 59,756853,31,068459,0,0,41059,1656134,2012-05-30,07-58-29 59,756853,31,068458,0,0,41059,1656250,2012-05-30,07-58-30 59,756854,31,068460,0,0,41059,1656366,2012-05-30,07-58-31 59,756856,31,068462,0,0,41059,1656713,2012-05-30,07-58-34 59,756855,31,068459,0,0,41059,1656713,2012-05-30,07-58-34 Quote Link to post Share on other sites
klif22 Posted October 23, 2014 Share Posted October 23, 2014 fims7, а в текстовом редакторе нельзя? Использовать функцию "найти и заменить". Quote Link to post Share on other sites
IШIN Posted October 23, 2014 Share Posted October 23, 2014 (edited) Не получится. В смысле тупо запятую менять не получится. Там тогда и остальные запятые поменяются (которые реально запятые, между параметрами). Надо менять по такому шаблону: Заменить "CR/LF 59," на "CR/LF 59." (возможно потребуется и с 60 поиграть) А потом аналогично ",31," на ",31." Все остальные параметры по-моему могут и вовсе отсутствовать, СНГ не обидится. Вариант второй - с экселем. Открываем файл экселем, как "фикс. Формат" и ставим колонки где нам надо. То есть чтоб по колонкам попали например 59,245677 , 31,234567 , 0 и т.д., чтоб запятые были в отдельных ячейках. Потом в колонках где координаты заменяем запятую на точку. И обратно превращаем в текст. Этот вариант можно даже автоматизировать с vba. Забыл - при импорте в Эксель импортировать все ячейки как "просто текст" ----- За ашыпки прашю винить TapaTalk Edited October 23, 2014 by IШIN 1 Quote Link to post Share on other sites
/DiOs Posted October 23, 2014 Share Posted October 23, 2014 Дети, вы что-нибудь слышали про регэкспы? А вот FARовский плагин слышал... А в третьем ФАРе это вообще стоковая функциональность. Я уж не говорю про порты awk'а, sed'а и прочих полезных вещей под винду. Мышовое гуевозение не должно быть шорами на всю жизнь, дети! 1 Quote Link to post Share on other sites
fims7 Posted October 24, 2014 Author Share Posted October 24, 2014 Дети, вы что-нибудь слышали про регэкспы? А вот FARовский плагин слышал... А в третьем ФАРе это вообще стоковая функциональность. Я уж не говорю про порты awk'а, sed'а и прочих полезных вещей под винду. Мышовое гуевозение не должно быть шорами на всю жизнь, дети! Где это можно почитать об этом наиболее доступно? Quote Link to post Share on other sites
IШIN Posted October 24, 2014 Share Posted October 24, 2014 Кажется, мы разбудили какую-то страшную Ктулху.... [emoji15] ----- За ашыпки прашю винить TapaTalk 1 Quote Link to post Share on other sites
svlad2012 Posted October 24, 2014 Share Posted October 24, 2014 (edited) Где это можно почитать об этом наиболее доступно? https://ru.wikipedia.org/wiki/Sed https://ru.wikipedia.org/wiki/AWK https://ru.wikipedia.org/wiki/%D0%E5%E3%F3%EB%FF%F0%ED%FB%E5_%E2%FB%F0%E0%E6%E5%ED%E8%FF и https://ru.wikipedia.org/wiki/%CA%F2%F3%EB%F5%F3 Edited October 24, 2014 by svlad2012 Quote Link to post Share on other sites
/DiOs Posted October 24, 2014 Share Posted October 24, 2014 Где это можно почитать об этом наиболее доступно? man regular expression Если серьёзно -- гуглим те самые regular expressions и из этой пропрвы выбираем что-нибудь типа "для чайников". В том виде, в котором это нужно для данной задачи -- это даже "для дырочки в шишечке крышки для чайника". Как применить на винде? Если есть ФАР, то уже сказал, после F7 ставим крыжик "использовать регулярные выражения". Если отдельным инструментом -- гуглим на тему портов юниховых тулзей под винду. Quote Link to post Share on other sites
/DiOs Posted October 24, 2014 Share Posted October 24, 2014 Если к ФАРу идиосинкразия, то для этой конкретной задачи я взял бы sed. Quote Link to post Share on other sites
fims7 Posted October 24, 2014 Author Share Posted October 24, 2014 Если к ФАРу идиосинкразия, то для этой конкретной задачи я взял бы sed. Я правильно понимаю что это нужно делать при непосредственном открытии файла? sed это команда в far или отдельная утилита? Quote Link to post Share on other sites
IШIN Posted October 24, 2014 Share Posted October 24, 2014 Это отдельный текстовый редактор, но из командной строки, то есть неинтерактивный. То есть запускается из ком. строки (ну или batником) Quote Link to post Share on other sites
/DiOs Posted October 24, 2014 Share Posted October 24, 2014 В ФАРе версий 1.х можно установить дополнительный плагин регулярных выражений. Начиная с ФАР2 функционал есть уже "из коробки". И в окнах search/replace появляется чекбокс для этого варианта поиска/замены. Если крыжик поставить, поиск будет осуществляться по правилам разбора регулярных выражений: В фаровском хелпе есть и про регекспы. sed, awk и пр. -- отдельные (изначально) юниховые тулзы. Очень мощный аппарат для обработки текста. Quote Link to post Share on other sites
MonoRAil.kz Posted October 24, 2014 Share Posted October 24, 2014 (edited) notepad++ тоже умеет регулярные выражения. и еще он умеет в гуёвом виде показывать неправильные разрывы переносы строк, которые, бывало, встречались в СитиГИДовских треках, то есть вместо CRLF был просто CR из-за чего винда читала такой файл в одну строку. Edited October 24, 2014 by MonoRAil.kz Quote Link to post Share on other sites
fims7 Posted October 24, 2014 Author Share Posted October 24, 2014 Пробую получаю что выбирает не всё что нужно как мне кажется Что то не так делаю? В англицком не силен... Quote Link to post Share on other sites
IШIN Posted October 24, 2014 Share Posted October 24, 2014 Дык вроде все правильно - в каждой строке по три вхождения. В результатах поиска он же каждую строку по три раза пишет. И указывает - в какой строке и с какой позиции - в каждой с 1, с 11 и с 28 позиции. Quote Link to post Share on other sites
fims7 Posted October 24, 2014 Author Share Posted October 24, 2014 (edited) Дык вроде все правильно - в каждой строке по три вхождения. В результатах поиска он же каждую строку по три раза пишет. И указывает - в какой строке и с какой позиции - в каждой с 1, с 11 и с 28 позиции. Точно, не сообразил что он строчку три раза дублирует, спасибо! Как теперь это всё заменить? И ещё вопрос, можно ли это сделать с десятком файлов, чтобы не открывать каждый и править так? Edited October 24, 2014 by fims7 Quote Link to post Share on other sites
/DiOs Posted October 24, 2014 Share Posted October 24, 2014 И ещё вопрос, можно ли это сделать с десятком файлов, чтобы не открывать каждый и править так? sed Или пользовательское меню на F2. Quote Link to post Share on other sites
curopat Posted October 28, 2014 Share Posted October 28, 2014 (edited) Что то не так делаю? В англицком не силен...Бросайте эти эксперименты для гиков, берите нормальный интерактивный редактор типа Notepad++ и сочиняйте регулярные выражения в нем Так Вам явно будет проще и быстрее. Кстати, у Notepad++ и справка, помнится, была по regexp-ам. Нормальная, читабельная в отдельном окне А можно (в нем же) через поиск/замену, с использованием рег.выражений или даже без. Edited October 29, 2014 by curopat Quote Link to post Share on other sites
IШIN Posted October 29, 2014 Share Posted October 29, 2014 берите нормальный интерактивный редактор типа Notepad++ и сочиняйте регулярные выражения в нем Так Вам явно будет проще и быстрее. Но ведь каждый трек надо будет отдельно открывать и заменять. А SED в BATе, как я понимаю, позволит одним кликом конвертнуть например все треки в папке. Quote Link to post Share on other sites
/DiOs Posted October 29, 2014 Share Posted October 29, 2014 А SED в BATе, как я понимаю, позволит одним кликом конвертнуть например все треки в папке. Если уж совсем до точки дойти, то я в ФАРе такое тоже сооружу, но это уже от чистого фанатизма. Это как я в фидошные времена на 4dos'е писал рутеры, файлэхопроцессоры... Ну да, забавно. Ну да, работали. Но,тем не менее, голимый фан. Quote Link to post Share on other sites
kzvs Posted October 29, 2014 Share Posted October 29, 2014 Но ведь каждый трек надо будет отдельно открывать и заменять. Ну зачем же каждый в отдельности? Открываем все сразу ... а в окошке замены выбираем во всех открытых документах Quote Link to post Share on other sites
curopat Posted October 29, 2014 Share Posted October 29, 2014 Ну да, забавно. Ну да, работали. Но,тем не менее, голимый фан. Ну да. Так то вы, а кому-то и squish настроить было проблемой. Хватает инструментов, позволяющих непродвинутым людям делать разные вещи наглядно и без... фана Quote Link to post Share on other sites
curopat Posted October 29, 2014 Share Posted October 29, 2014 Открываем все сразу ... а в окошке замены выбираем во всех открытых документах Если файлов не больше десятка, то проще всего так, да. Если много, то можно открыть один, удобно отладить на нем regexp(ы) для поиска-замены, а потом использовать их в командной строке SED в батнике ))) Quote Link to post Share on other sites
fims7 Posted February 17, 2015 Author Share Posted February 17, 2015 (edited) Снова вопрос по теме, в начале отвлекли по работе не смог разобраться до конца, в общем суть осталась >та же. Но с прогрессом поставил notepad++, сделал регулярное выражение которое выбирает почти что надо, ещё подцепляет 3 группу символов, которую подцеплять рег. выражением не нужно. И вот вопрос что можно добавить в рег. выражение чтобы не цепляло 3 группу символов, сам не могу сообразить и что нужно поставить в окно "заменить на" чтобы только запятая менялась на точку. UPD С первым вопрос вроде разобрался, остался второй и основной Edited February 17, 2015 by fims7 Quote Link to post Share on other sites
Solution /DiOs Posted February 17, 2015 Solution Share Posted February 17, 2015 Я не знаю, как в нотепадовской, а в перловой нотации это выглядело бы так: ^(d{2}),(d{6}),(d{2}),(d{6}) $1.$2,$3.$4 1 Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.