2015-09-21 2 views
0

Я признаю, что я новичок в сценарии bash, но не могу понять, как выполнить ключевой шаг в скрипте и не мог найти, что Я искал в других потоках.Добавить данные в конец определенной строки в текстовом файле

Я пытаюсь извлечь некоторые конкретные данные (числовые значения) из нескольких XML-файлов и добавить их в текстовый файл с разделителем пробела или табуляции. Файлы будут генерироваться с течением времени, поэтому мне нужно добавить новый набор данных в уже существующий текстовый файл.

Например, я хотел бы извлечь значения для трех разных категорий: 1 для каждой строки или столбца и значения для каждой категории из нескольких xml-файлов. В принципе, я хочу построить непрерывный график данных из каждой из трех категорий с течением времени.

У меня есть следующий код, который будет успешно извлечь 3 номера из файла XML и обрезать ненужный текст:

#!/bin/sh 

    grep "<observation name=\"meanGhost\" type=\"float\">" "/Users/Erik/MRI/PHANTOM/2/phantom_qa/summaryQA.xml" \ 

    | sed 's/<observation name=\"meanGhost\" type=\"float\">//g' \ 

    | sed 's/<\/observation>//g' >> $HOME/Desktop/testxml.txt 


    grep "<observation name=\"meanBrightGhost\" type=\"float\">" "/Users/Erik/MRI/PHANTOM/2/phantom_qa/summaryQA.xml" \ 

    | sed 's/<observation name=\"meanBrightGhost\" type=\"float\">//g' \ 

    | sed 's/<\/observation>//g' >> $HOME/Desktop/testxml.txt 


    grep "<observation name=\"std\" type=\"float\">" "/Users/Erik/MRI/PHANTOM/2/phantom_qa/summaryQA.xml" \ 

    | sed 's/<observation name=\"std\" type=\"float\">//g' \ 

    | sed 's/<\/observation>//g' >> $HOME/Desktop/testxml.txt 

Это дает выход:

1,12

0,33

134.1

Я хотел бы, чтобы потом прочитать в другом файле XML, чтобы получить:

1,12 1,45

0,33 0,54

134,1 144,1

Я был бы признателен за любую помощь с этим! Заранее спасибо.

Эрик

ответ

1

Это гораздо безопаснее использовать соответствующие инструменты обработки XML. Например, в xsh вы можете написать что-то вроде

$f1 := open /Users/Erik/MRI/PHANTOM/2/phantom_qa/summaryQA.xml ; 
$f2 := open /path/to/the/second/file.xml ; 

echo ($f1 | $f2)//observation[@name="meanGhost"] ; 
echo ($f1 | $f2)//observation[@name="meanBrightGhost"] ; 
echo ($f1 | $f2)//observation[@name="std"] ; 
Смежные вопросы