Я данных XML, отформатированный таким образом:XMLStarlet: Печать на одну строку за единицу, в то время как, используя опорную точку из родительского элемента
<XML>
<Waveforms Time="01/01/2009 3:00:02 AM">
<WaveformData Channel="I">1, 2, 3, 4, 5, 6 </WaveformData>
<WaveformData Channel="II">9, 8, 7, 6, 5, 4 </WaveformData>
</Waveforms>
<Waveforms Time="01/01/2009 3:00:04 AM">
<WaveformData Channel="I">1, 2, 3, 4, 5, 6 </WaveformData>
<WaveformData Channel="II">9, 8, 7, 6, 5, 4 </WaveformData>
</Waveforms>
</XML>
Я пытаюсь использовать XMLStarlet для анализа этих данных в текстовый файл (через запятую). Нужный результат будет выглядеть следующим образом:
Time Attribute, Channel Attribute, Data
01/01/2009 3:00:02 AM, I, 1, 2, 3, 4, 5, 6
01/01/2009 3:00:02 AM, II, 9, 8, 7, 6, 5, 4
01/01/2009 3:00:02 AM, I, 1, 2, 3, 4, 5, 6
01/01/2009 3:00:02 AM, II, 9, 8, 7, 6, 5, 4
Лучшее, что я могу придумать это:
xmlstarlet sel -T -t -m //XML/Waveforms -v @Time -o "," -m Waves -v WaveformData/@Channel -o "," -v WaveformData -o "," -b -n testwave2.xml > testwave.txt
Что дает результат, как этот:
01/01/2009 3:00:02 AM, I, 1, 2, 3, 4, 5, 6, II, 9, 8, 7, 6, 5, 4
01/01/2009 3:00:04 AM, I, 1, 2, 3, 4, 5, 6, II, 9, 8, 7, 6, 5, 4
Это ясно, как печатать одна строка на Waveforms, но не как печатать одну строку на WaveformData, если я хочу включить атрибут time из своего родителя. Это можно сделать? В качестве альтернативы, следует ли мне работать и делать некоторые нарезки и вставки, чтобы потом исправить их на заднем конце?
Предложенная командная строка в этом вопросе и тестовых данных в этом вопросе доном Фактически мы работаем вместе. Может быть, устранены «Волны»? –
... В настоящий момент я волнуюсь, что любой ответ, который я сгенерировал, не будет работать против ваших * фактических * данных. –
Кажется, я вставил спину от кода, который я использовал для генерации вывода выше. Я думаю, что единственное различие заключается в том, что волны -m удаляются, но не смогут проверить до завтра. Реальный вопрос заключается в том, как просто получить время для анализа с каждым набором данных формы волны. –