【问题标题】:Spotting the first local minimum of 2 column CSV data in a Bash shell script在 Bash shell 脚本中发现 2 列 CSV 数据的第一个局部最小值
【发布时间】:2013-02-14 22:30:32
【问题描述】:

我想编写一个 Bash shell 脚本函数来返回简单 2 列 CSV 数据中第一个局部最小数据点的 x、y 坐标。

该函数将 Bash 变量(例如“${myData}”)作为输入,该变量存储如下数据:

10, 0.14665
20, 0.144971
30, 0.14262
40, 0.142424
50, 0.142370
60, 0.142375
70, 0.142375
80, 0.142375
90, 0.142375
100, 0.142375
110, 0.142306
120, 0.142017
130, 0.141054
140, 0.140148
150, 0.139993
160, 0.139972
170, 0.139958
180, 0.139932
190, 0.139886
200, 0.139876
210, 0.13987
220, 0.139865
230, 0.139861
240, 0.13986
250, 0.139857
260, 0.139855
270, 0.139853
280, 0.139852
290, 0.139847
300, 0.139847

我希望函数找出第一个局部最小值点(在这种情况下,这将对应于坐标 50, 0.142370)并返回该点的坐标。你能建议一个简单的方法吗?

【问题讨论】:

    标签: bash shell csv minimum


    【解决方案1】:

    您可以在一行上使用 awk,也可以像这里一样缩进:

    awk '
      NR > 1 { 
        if ($2 > n) { 
          print line; 
          exit(0); 
        } 
      }  
      { 
        line=$0; 
        n=$2 
      }
    ' <<< "${myData}"
    

    您还可以取出exit(0); 以显示所有局部最小值。

    【讨论】:

    • 啊,这很整洁!感谢您对此的帮助;你把我从一些低效的循环中救了出来。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    • 2017-02-11
    • 2016-06-24
    • 2019-02-10
    相关资源
    最近更新 更多