0

我想编写一个 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)并返回该点的坐标。你能建议一个简单的方法吗?

4

1 回答 1

1

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

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

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

于 2013-02-14T22:55:37.420 回答