Lea csv desde el script de shell e imprima el encabezado de la columna según la coincidencia más cercana a la entrada del usuario

Lea csv desde el script de shell e imprima el encabezado de la columna según la coincidencia más cercana a la entrada del usuario

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

información relacionada