xpath를 사용하지 않고 노드 수를 계산하고 속성 값을 얻는 방법

xpath를 사용하지 않고 노드 수를 계산하고 속성 값을 얻는 방법

현재 다음과 같은 쉘 스크립트가 있습니다.

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="(.*)"/'

관련 정보