現在、次のシェルスクリプトがあります。
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="(.*)"/'