Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Репарсинг одного текстового формата в другой (http://forum.oszone.net/showthread.php?t=208327)

alexey_vf 05-06-2011 23:40 1689002

Репарсинг одного текстового формата в другой
 
Возможно кто-то подскажет что нужно делать:
Нужно этот формат:

INDEX,TAG,DATE,TIME,LATITUDE N/S,LONGITUDE E/W,HEIGHT,SPEED,HEADING,FIX MODE,VALID,PDOP,HDOP,VDOP,VOX
1,T,110519,095141,46.418703N,030.459649E,70,20,0,3D,SPS ,1.1,0.8,0.7,
2,T,110519,095142,46.418629N,030.459584E,74,12,0,3D,SPS ,1.4,1.2,0.8,

Перегнать в этот формат:
Маркер начала точки: Sta {, маркер конца точки }. Одна точка: 1,T,110519,095141,46.418703N,030.459649E,70,20,0,3D,SPS ,1.1,0.8,0.7, соотв. одному блоку Sta {...}.

читать дальше »

Sta {
ID: "1"
Rem: "POINT"
GTim: 572335.000000
Pos: 46.38339986 30.74699869 56.546
Mode: SP
Std: 2.100 2.100 2.382
Hi: 7.0000 VERT
Nsv: 10 10 0
}
Sta {
ID: "1"
Rem: "POINT"
GTim: 572335.000000
Pos: 46.38339986 30.74699869 56.546
Mode: SP
Std: 2.100 2.100 2.382
Hi: 7.0000 VERT
Nsv: 10 10 0
}
Sta {
ID: "2"
Rem: "POINT"
GTim: 572363.000000
Pos: 46.38340016 30.74700347 56.457
Mode: SP
Std: 2.110 2.110 2.410
Hi: 7.0000 VERT
Nsv: 9 9 0
}
Sta {
ID: "2"
Rem: "POINT"
GTim: 572363.000000
Pos: 46.38340016 30.74700347 56.457
Mode: SP
Std: 2.110 2.110 2.410
Hi: 7.0000 VERT
Nsv: 9 9 0
}


Вроде все очень просто, но с чего начинать нехватает знаний.
Заранее спасибо за совет. Интересует решение на cmd (bat).

amel27 06-06-2011 10:39 1689170

исходные данные не стыкуются с предполагаемым результатом (разные цифры),
возьмите пример в несколько строк и покажите, что и куда должно сконвертироваться

alexey_vf 06-06-2011 15:15 1689326

Цитата:

исходные данные не стыкуются с предполагаемым результатом (разные цифры),
возьмите пример в несколько строк и покажите, что и куда должно сконвертироваться
Да именно, данные не совпадают: в первом случае исходные данные (дата, время) нормальные: 110519 - дата, 095142 - время.
А результирующем файле дата-время в виде GPS Seconds - GTim: 572335.000000.
Т.е. DATE,TIME в csv файле равно например: GTim: 572335.000000. Расчет параметра отдельный вопрос не касающийся репарсинга.

Переформулирую и упрощаю задачу.

Есть такой файл:

INDEX,TAG,DATE,TIME,LATITUDE N/S,LONGITUDE E/W,HEIGHT,SPEED,HEADING,FIX MODE,VALID,PDOP,HDOP,VDOP,VOX
1,T,110519,095141,46.418703N,030.459649E,70,20,0,3D,SPS ,1.1,0.8,0.7,sound1.wav
2,T,110519,095142,46.418629N,030.459584E,74,12,0,3D,SPS ,1.4,1.2,0.8,sound2.wav

Нужно получить такой файл.

Sta {
ID: "1"
Rem: "POINT"
GTim: 110519 095141
Pos: 46.418703 30.459649 70
}
Sta {
ID: "1"
Rem: "POINT"
GTim: 110519 095142
Pos: 46.418629 30.459584 74
}

Где заголовки данных: исходный файл (столбик) - результ. файл (строка) сответствуют:

Index = ID
DATE,TIME = GTim
VOX = Rem
LATITUDE N/S,LONGITUDE E/W,HEIGHT = Pos

amel27 07-06-2011 10:40 1689796

как-то так:
Код:

@echo off
set FILE=file.txt

setlocal EnableDelayedExpansion
(for /f "usebackq skip=1 tokens=1,3-7 delims=," %%a in ("%FILE%") do (
  Echo Sta {
  Echo ID: "%%a"
  Echo Rem: "POINT"
  Echo GTim: %%b %%c
  Echo Pos: %%d %%e %%f
  Echo }
))>"%~n0.tmp"
copy "%~n0.tmp" "%FILE%">nul&& del "%~n0.tmp"


alexey_vf 07-06-2011 19:07 1690174

То что нужно! Спасибо.


Время: 17:56.

Время: 17:56.
© OSzone.net 2001-