dada una secuencia de entrada con líneas siguientes:AWK: ejecutar CURL en cada línea y analizar resultar
123
456
789
098
...
quisiera llamar
curl -s http://foo.bar/some.php?id=xxx
con xxx es el número para cada línea, y cada vez, deje que un script awk obtenga cierta información del resultado del curl que se escribe en el flujo de salida. Me pregunto si esto es posible sin utilizar el awk "sistema()" llamada en modo siguiente:
cat lines | grep "^[0-9]*$" | awk '
{
system("curl -s " $0 \
" | awk \'{ #parsing; print }\'")
}'
Me resulta interesante esta pregunta en situaciones en las que la entrada proviene de un flujo "real", no de un archivo. Por ejemplo, un dispositivo sensor que genera datos (líneas) periódicamente, p. en/dev/ttyUSB0. En tales casos, las respuestas propuestas (lectura de un archivo) son aplicables solo si se almacenan datos del flujo de un archivo temporal y se procesa periódicamente el archivo (¿qué pasa si los datos llegan durante el procesamiento?). Pero un enfoque más directo (usando una tubería) podría ser mejor ... –
Tenga en cuenta que 'cat | grep | awk' se puede simplificar a solo 'awk '/^[0-9] + $/{}' file'. Además, ¿qué tipo de análisis quieres hacer? Tal vez no es necesario utilizar 'awk' en absoluto y basta un ciclo' while read'. – fedorqui