
Tengo un archivo csv. Tiene varias columnas. Quiero desarrollar un script de shell que solicite el uso de un valor numérico, encuentre la coincidencia más cercana en el csv e imprima el encabezado de la columna. Por ejemplo
Apple orange grape berry
1 1.3 1.9 0.4 1.756
2 2.1. 3.3 6.6 0.964
3 0.444 1.364 1.1 3.6
Si la entrada del usuario es 3,4, entonces el valor más cercano es 3,3 y la salida debería ser "Esto es naranja".
¿Alguna idea sobre cómo puedo lograr esto? (Para su información, CSV es un archivo bastante grande)
Respuesta1
Esto es un poco poco elegante pero funciona.
read -p "Enter a value .... " t
awk -v test=$t 'NR==1{min=1000;for (i=1; i<=NF; i++) head[i]=$i}
NR>1 && NF>0{for (i=2; i<=NF; i++){diff=($i<test)?(test-$i):($i-test); if (diff<min) {min=diff; item=i-1} }}
END{ print "Closest to "test" is "head[item]}' file
Producción
Closest to 3.4 is orange