Análisis de CSV con AWK para producir resultados HTML

Análisis de CSV con AWK para producir resultados HTML

Tengo un archivo de datos con filas de campos separados por comas como este:

United Kingdom, GB, +44

y quiero generar el siguiente resultado para cada línea del archivo:

<option value="GB">United Kingdom +44</option>

Llegué a lo siguiente con awk, pero después de agregar los corchetes angulares obtengo un resultado destrozado:

BEGIN{FS=",";}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
{                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
    print "<option value=\"" $2 "\">";                                                                                                                                                                                                                         

}

Respuesta1

La función de awk printfpuede ser más fácil de usar cuando se trata de comillas incrustadas.

awk -F, '{printf("<option value=\"%s\">%s %s</option>\n", $2, $1, $3)}'

El problema con eso es que también tienes espacios en blanco entre cada campo. Podemos usar la gsubfunción para recortar cada campo.

awk -F, '{gsub(/^ +| +$/,"", $2); printf("<option value=\"%s\">%s %s</option>\n", $2, $1, $3)}'

O lo que es más fácil es cambiar nuestro separador de campos: awk -F' *, *' '{printf("%s %s\n", $2, $1, $3)}'

Si necesita recortar varios campos, podría ser mejor utilizar un bucle o una función (según la situación). Verhttps://stackoverflow.com/questions/9985528/how-can-i-trim-white-space-from-a-variable-in-awkpara más información.

Respuesta2

Dominio

awk -F "," '{print "<option value="$2">United Kingdom "$3"</option>"}' filename| sed 's/GB/"&"/g'

producción

<option value= "GB">United Kingdom  +44</option>

información relacionada