PDA

Показать полную графическую версию : [решено] Репарсинг одного текстового формата в другой


alexey_vf
05-06-2011, 23:40
Возможно кто-то подскажет что нужно делать:
Нужно этот формат:

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
исходные данные не стыкуются с предполагаемым результатом (разные цифры),
возьмите пример в несколько строк и покажите, что и куда должно сконвертироваться

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

Да именно, данные не совпадают: в первом случае исходные данные (дата, время) нормальные: 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
как-то так:@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
То что нужно! Спасибо.




© OSzone.net 2001-2012