2013-02-14 27 views
0

我想編寫一個Bash shell腳本函數來返回簡單2列CSV數據中第一個局部最小數據點的x,y座標。在Bash shell腳本中查找2列CSV數據的第一個局部最小值

功能將採取作爲輸入的擊變量(比如「$ {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)並返回此點的座標。你能提出一個簡單的方法來做到這一點?

回答

1

您可以用awk,無論是在同一行或嬌滴滴縮進在這裏:

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

您還可以拿出exit(0);顯示所有本地最低高度。

+0

啊,這非常整齊!感謝您的幫助;你從一些低效的循環中拯救了我。 – d3pd 2013-02-15 02:14:30

相關問題