Estoy tratando de utilizar la línea de comandos para extraer un valor específico de una página web.
La página es del mercado VS Code: https://marketplace.visualstudio.com/items?itemName=HCLTechnologies.hclappscancodesweep y estoy tras el número de instalaciones. Me las arreglé para llegar a un punto donde puedo aislar hasta esto:
{"statisticName":"install","value":206.0},{"statisticName":"averagerating","value":5.0},{"statisticName":"ratingcount","value":8.0},{"statisticName":"trendingdaily","value":0.0},{"statisticName":"trendingmonthly","value":88.950276243093924},{"statisticName":"trendingweekly","value":28.7292817679558},{"statisticName":"weightedRating","value":4.668447071838485}],"installationTargets":[{"target":"Microsoft.VisualStudio.Code","targetVersion":""}],"deploymentType":0}
Estoy en un mac y usando zsh. El comando que estoy usando actualmente es:
curl -G "https://marketplace.visualstudio.com/items?itemName=HCLTechnologies.hclappscancodesweep" | grep -Eo {\"statisticName\":\"install\",\"value\":.+\}
La salida deseada de este comando debe ser: 206.0
que es el número que busco. Si puedes reducirlo a 206
que es aún mejor.
Tengo dos problemas principales: 1) No puedo aislar el partido para que empiece justo antes de mi número. He intentado \K
pero eso no parece funcionar en el mac. Tampoco vi la opción de usar grupos.
2) No puedo hacer que la coincidencia después de mi número se detenga después de la primera coincidencia de una llave }
. Tenga en cuenta que el número puede variar en longitud, por lo que quiero detenerlo donde el JSON se detiene. De hecho, intenté usar [:digit:]
y [0-9]
para restringir al número, pero eso tampoco funcionó y por eso me fui por el camino de las llaves.
He visto algunas opciones por ahí para trabajar con la parte JSON y extraer cosas ahí, pero el entorno con el que estoy trabajando no tiene la flexibilidad de instalar otras utilidades, así que necesito ayuda para conseguirlo con un entorno "vainilla".
P.D. Estoy trabajando en Catalina 10.15.4