我承认自己是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
如果有任何帮助,我将不胜感激!提前谢谢。
埃里克
答案 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"] ;