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 printf
puede 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 gsub
funció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>