Analizando el campo requerido de una URL en awk

Tengo un requisito que es analizar el campo obligatorio de una URL. Para este propósito, necesito recorrer esa URL letra por letra ya que no hay separación de espacios entre las palabras. Pero no soy capaz de conseguir eso. He intentado lo siguiente

awk '{FS = "";for (i = 2; i <= NF; i++) {print $i}}'  file

El archivo contiene esto

https://stackoverflow.com/questions/ask/submit?s=sddasdsadSOMEFIELD=8171CAMPO DESEADO=121212ALGÚN CAMPO=1201212...

Así que mi idea es recorrer esta URL letra por letra y luego llegar al campo requerido... Pero no puedo hacerlo. Cualquier sugerencia por favor

preguntado el 03 de julio de 12 a las 01:07

Debe definir cómo reconocer "WANTEDFIELD". ¿Es siempre la segunda cosa de la forma "ALPHAS=NUMS", o está siempre entre dos "ALGUNOS CAMPOS" literales? La respuesta es probablemente expresiones regulares, pero debe proporcionar más detalles. -

¿Tu campo buscado es consistente? Si es así, ¿qué es? -

Lo siento por esto chicos.. El WANTEDFIELD no está definido.. La posición del mismo no se conoce... -

¿Necesitan más detalles? -

Sí. ¿Cómo sabes cuándo lo has encontrado? -

1 Respuestas

Esto podría funcionar, pero asume el patrón con = y *.

echo "http://stackoverflow.com/questions/ask/submit?s=sddasdsadSOMEFIELD=8171*WANTEDFIELD=121212*SOMEFIELD=1201212..." |awk -F "[*=]" -vFIELDNAME="WANTEDFIELD"  '{for (i=1;i<=NF;i++){if(match($i,FIELDNAME)){printf "%s\t", $(i+1)}};printf "\n"}'

salida:

121212

cambiando a ALGÚN CAMPO como campo de destino:

echo "http://stackoverflow.com/questions/ask/submit?s=sddasdsadSOMEFIELD=8171*WANTEDFIELD=121212*SOMEFIELD=1201212..." | awk -F "[*=]" -vFIELDNAME="SOMEFIELD"  '{for (i=1;i<=NF;i++){if(match($i,FIELDNAME)){printf "%s\t", $(i+1)}};printf "\n"}'

resulta en:

8171    1201212...

Respondido 03 Jul 12, 13:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.