![如何在不使用xpath的情况下统计节点并获取属性值](https://linux22.com/image/81495/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%8D%E4%BD%BF%E7%94%A8xpath%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E7%BB%9F%E8%AE%A1%E8%8A%82%E7%82%B9%E5%B9%B6%E8%8E%B7%E5%8F%96%E5%B1%9E%E6%80%A7%E5%80%BC.png)
目前我有一个像这样的shell脚本:
LOGIN=`curl 'https://www.ponta.jp/u/LWAS900/SLWAS900010.htm' -sS | grep '<input type="hidden" name\|<form\|</form'`
for i in $(seq $(printf "$LOGIN" | xmllint --xpath "count(/form/input)" -))
do
printf " -d "
printf "$LOGIN" | xmllint --xpath "string(/form/input[$i]/@name)" -
printf "="
printf "$LOGIN" | xmllint --xpath "string(/form/input[$i]/@value)" -
done
我想在没有 xpath 的 unix 环境上做同样的事情。谁能告诉我该怎么做?
答案1
基于 XML 解析器的解决方案是最佳选择。不过,这里有一个快速的正则表达式技巧:
LOGIN=...
printf "$LOGIN" |
perl -nE 'say "-d $1=$2" if /name="(.*?)".*?value="(.*)"/'