Bash 数据无效时的线性插值

Bash 数据无效时的线性插值,bash,awk,interpolation,linear-interpolation,Bash,Awk,Interpolation,Linear Interpolation,我希望仅在数据等于“---”的情况下,基于上一个已知值和下一个已知值线性插值单个列 数据示例: 0 --- --- --- 10 --- 20 22 15 --- --- --- -15 想要的输出: 0 2.5 5 7.5 10 15 20 22 15 7.5 0 -7.5 -15 我见过可以根据第一列(如date)进行插值的代码,如前所述。还有其他一些代码,比如,但它们对我不起作用。提前谢谢你 awk救援 $ awk '!/---/ {n=c; while(c&&c--)

我希望仅在数据等于“---”的情况下,基于上一个已知值和下一个已知值线性插值单个列

数据示例:

0
---
---
---
10
---
20
22
15
---
---
---
-15
想要的输出:

0
2.5
5
7.5
10
15
20
22
15
7.5
0
-7.5
-15

我见过可以根据第一列(如date)进行插值的代码,如前所述。还有其他一些代码,比如,但它们对我不起作用。提前谢谢你

awk
救援

$ awk '!/---/ {n=c; while(c&&c--) print v+(n-c)*($1-v)/(n+1); v=$1; print } 
        /---/ {c++}' file

0
2.5
5
7.5
10
15
20
22
15
7.5
0
-7.5
-15

我强烈建议您使用bash以外的另一种语言。Python有()和模块,它们都实现了线性插值,可能比bash更容易处理。我刚开始使用bash和awk编写脚本,但仍在尝试理解它们的基础知识。