将数据附加到文本文件中特定行的末尾

时间:2015-09-21 23:18:02

标签: bash sed

我承认自己是bash脚本的新手,但似乎无法弄清楚如何在脚本中完成关键步骤,并且无法在其他线程中找到我想要的东西。

我试图从多个.xml文件中提取一些特定数据(数值),并将它们添加到空格或制表符分隔的文本文件中。文件将随着时间的推移而生成,因此我需要一种方法将新数据集附加到预先存在的文本文件中。

例如,我想提取3个不同类别的值,每行或每列1个值,以及多个xml文件中每个类别的值。基本上,我希望随着时间的推移建立一个连续的3个类别的数据图。

我有以下代码,它将成功从xml文件中提取3个数字并修剪不必要的文本:

    #!/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 个答案:

答案 0 :(得分: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"] ;