linux 中输出中位数

 

1、

复制代码
[root@PC1 test2]# ls
a.txt  b.txt  test.sh
[root@PC1 test2]# cat a.txt    ## 测试数据
8
2
4
8
7
3
[root@PC1 test2]# cat b.txt
8
3
4
8
5
3
6
[root@PC1 test2]# cat test.sh       ## 程序
#!/bin/bash

lines=$(sed -n "$=" $1)
let test=lines%2

if [ $test -eq 0 ]
then
        let line1=lines/2
        let line2=lines/2+1
        sort -n $1 | awk -v a=$line1 -v b=$line2 'NR == a || NR == b {sum += $1} END {print sum/2}'
else
        let line1=lines/2+1
        sort -n $1 | awk -v a=$line1 'NR == a'
fi

[root@PC1 test2]# bash test.sh a.txt    ## 输出a.txt的中位数
5.5
[root@PC1 test2]# bash test.sh b.txt    ## 输出b.txt的中位数
5
复制代码

 

posted @   小鲨鱼2018  阅读(417)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
历史上的今天:
2021-06-01 c语言 11-8
2021-06-01 c语言 11-7
2021-06-01 c语言中转换字符串函数 atoi函数
2021-06-01 c语言中 strncmp函数, 函数原型和头文件。
2021-06-01 c语言中strcmp函数,函数原型和函数头文件
2021-06-01 c语言中strncat函数,函数原型以头文件
2021-06-01 c语言中strcat函数,函数原型和函数头文件
点击右上角即可分享
微信分享提示