我從xml文件中提取屬性值,但出現錯誤。 我想提取key="qua"
的第一部分元素的值。這裏是我的腳本,但是下面你可以發現錯誤:bash提取使用xmllint xml屬性值
#!/bin/bash
myfile=$1
myvar=$(echo 'cat //firstpart/step/category/id/info[@key="qua"]/@value' | xmllint --xpath "$myfile" | awk -F'[="]' '!/>/{print $(NF-1)}')
echo "$myvar"
怎麼我的XML文件的樣子:
<?xml version='1.0' encoding='UTF-8'?>
<firstpart>
<step name="Home">
<category name="one">
<id name="tools">
<info key="qua" value="1"/>
</id>
</category>
</step>
<step name="Contact">
<category name="two">
<id name="tools">
<info key="qua" value="2"/>
</id>
</category>
</step>
...
</firstpart>
<secondpart>
<step name="office">
<category name="one">
<id name="tools">
<info key="qua" value="100"/>
</id>
</category>
</step>
<step name="Contact">
<category name="two">
<id name="tools">
<info key="qua" value="200"/>
</id>
</category>
</step>
...
</secondpart>
的錯誤,我得到:
awk: run time error: negative field index $-1
FILENAME="-" FNR=71 NR=71
./mybash.sh: line 3: $: command not found
./mybash.sh: line 4: $: command not found
您是否嘗試過的xmllint輸出保存到一個文件,並在該運行AWK?我假設沒有,因爲如果你這樣做,你的問題會非常明顯。 –
@EdMorton我該怎麼做?你能提供一個答案嗎? – passion
而不是管道到awk,重定向到一個文件。然後在該文件上運行awk並得到相同的錯誤。然後檢查文件以查看問題。 – choroba