Leia o csv do shell script e imprima o cabeçalho da coluna com base na correspondência mais próxima da entrada do usuário

Leia o csv do shell script e imprima o cabeçalho da coluna com base na correspondência mais próxima da entrada do usuário

Eu tenho um arquivo csv. Possui várias colunas. Quero desenvolver um script de shell que solicite o uso de um valor numérico, encontre a correspondência mais próxima no csv e imprima o cabeçalho da coluna. Por exemplo

        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

Se a entrada do usuário for 3,4, o valor mais próximo será 3,3 e a saída deverá ser "This is Orange"

Alguma idéia de como posso conseguir isso. (Para sua informação - CSV é um arquivo muito grande)

Responder1

Isso é um pouco deselegante, mas 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

Saída

Closest to 3.4 is orange

informação relacionada