我创建了shell脚本来读取文件并将元素存储到数组中。
现在我想从数组中删除一些元素,其中包含</
。
我的xml文件:
<Execution_Stats>
<Total_Executions>1</Total_Executions>
<Total_Errors>0</Total_Errors>
<SQL_Analysis>
<NOT_COMPARED>1</NOT_COMPARED>
<MATCHED>0</MATCHED>
<NOT_MATCHED>0</NOT_MATCHED>
<ERROR>0</ERROR>
</SQL_Analysis>
<Data_Analysis>
<NOT_COMPARED>0</NOT_COMPARED>
<MATCHED>0</MATCHED>
<NOT_MATCHED>1</NOT_MATCHED>
<ERROR>0</ERROR>
</Data_Analysis>
<Graph_Analysis>
<NOT_COMPARED>1</NOT_COMPARED>
<MATCHED>0</MATCHED>
<NOT_MATCHED>0</NOT_MATCHED>
<ERROR>0</ERROR>
</Graph_Analysis>
<Excel_Analysis>
<NOT_COMPARED>1</NOT_COMPARED>
<MATCHED>0</MATCHED>
<NOT_MATCHED>0</NOT_MATCHED>
<ERROR>0</ERROR>
</Excel_Analysis>
<Pdf_Analysis>
<NOT_COMPARED>1</NOT_COMPARED>
<MATCHED>0</MATCHED>
<NOT_MATCHED>0</NOT_MATCHED>
<ERROR>0</ERROR>
</Pdf_Analysis>
</Execution_Stats>
shell脚本:
#!/bin/bash
txt=($(grep '_Analysis' "results.xml"))
unset(txt[1])
unset(txt[3])
unset(txt[5])
unset(txt[7])
unset(txt[9])
但我没有按照我的预期得到结果。
我希望看到像
这样的输出txt[0]=SQL_Analysis
txt[1]=Data_Analysis
txt[2]=Graph_Analysis
txt[3]=Excel_Analysis
txt[4]=PDF_Analysis
但是
txt[0]=SQL_Analysis
txt[1]=
txt[2]=Data_Analysis
txt[3]=
txt[4]=Graph_Analysis
txt[5]=
txt[6]=Excel_Analysis
txt[7]=
txt[8]=PDF_Analysis
txt[9]=
或者,如果有办法我无法从文件中选择以</
开头的任何文字?
答案 0 :(得分:1)
取消设置变量的语法错误。我甚至不确定你的代码是如何执行的,因为你导致语法错误。 你的代码:
#!/bin/bash
txt=($(grep '_Analysis' "test.xml"))
unset(txt[1])
unset(txt[3])
unset(txt[5])
unset(txt[7])
unset(txt[9])
输出:
test.sh: line 5: syntax error near unexpected token `txt[1]'
test.sh: line 5: `unset(txt[1])'
见下文:
#!/bin/bash
txt=($(grep '_Analysis' "test.xml"))
unset 'txt[1]'
unset 'txt[3]'
unset 'txt[5]'
unset 'txt[7]'
unset 'txt[9]'
for key in ${txt[@]}; do
echo $key
done
这给了我:
dumbledore@ansible1a [OPS]:~ > bash test.sh
<SQL_Analysis>
<Data_Analysis>
<Graph_Analysis>
<Excel_Analysis>
<Pdf_Analysis>