使用移动窗口bash脚本的中位数

我需要创build一个文件txt,其中包含一个中值的列表,如果我有一个文件,如下所示:

  1. 1
  2. 2
  3. 35
  4. 40
  5. 50

我想要一个输出

  1. 1
  2. 1.5
  3. 2
  4. 18.5
  5. 35

我试着从我的input文件中挑选一个数字,然后使用sorting,但是我没有走多远..我希望我明确表示,谢谢!

你可以使用awk来实现这一点。 例如,当你的数据在一个名为in.txt的文件中in.txt

  awk '{c[NR]=$1; asort(c); if (NR%2) {print c[(NR+1)/2]} else {print (c[(NR/2)]+c[(NR/2)+1]) / 2.0}}' < in.txt 

导致输出

 1 1.5 2 18.5 35