Shell-Script

從 shell 腳本中讀取 csv 並根據與使用者輸入的最接近匹配列印列標題

  • November 25, 2019

我有一個 csv 文件。它有多個列。我想開發一個 shell 腳本,提示使用數值,在 csv 中找到最接近的匹配項並列印列的標題。例如

       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

如果使用者輸入是 3.4,那麼最接近的值是 3.3,輸出應該是“This is Orange”

關於如何實現這一點的任何想法。(僅供參考 - CSV 文件非常大)

這有點不雅但有效

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

輸出

Closest to 3.4 is orange

引用自:https://unix.stackexchange.com/questions/553951