使用 awk 计算第 95 个百分位

2024-02-18

我是 awk 脚本编写的新手,希望获得一些帮助来计算包含以下数据的文件的第 95 个百分位值:

0.0001357
0.000112
0.000062
0.000054
0.000127
0.000114
0.000136

I tried:

cat filename.txt | sort -n |
awk 'BEGIN{c=0} {total[c]=$1; c++;} END{print total[int(NR*0.95-0.5)]}'

但当我将它与 Excel 进行比较时,我似乎没有得到正确的值。


我不确定 Excel 是否执行某种加权百分位数,但如果您确实想要原始集合中的数字之一,那么您的方法应该可以正确进行舍入。

你可以像这样简化一点,但其实是一样的。

sort -n input.txt  | awk '{all[NR] = $0} END{print all[int(NR*0.95 - 0.5)]}'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 awk 计算第 95 个百分位 的相关文章

  • 使用 join/awk/sed 合并 CSV 文件

    您能帮我找到 bash 命令 该命令会将以下 cvs 文件 template csv file1 csv file2 csv file3 csv fileX csv 加入 合并到 ouput csv 中吗 对于 template csv 中
  • 如果某一列中的文本与其前面的文本不匹配,则将一个大文件拆分为多个文件

    我搜索了一段时间 找不到对此的回应 我有一个标准 tsv 文件 格式如下 1 100 101 350 A 1 101 102 300 A 1 102 103 180 A 1 800 801 60 B 1 801 802 70 B 1 802
  • 匹配两个不同文件中最接近的值并打印特定列

    大家好 我有两个文件 每个文件都有 N 列和 M 行 File1 1 2 4 6 8 20 4 8 10 12 15 5 7 9 11 File2 1 a1 b1 c5 d1 2 a1 b2 c4 d2 3 a2 b3 c3 d3 19 a
  • 如何使用 awk 将一组重复的行转置为列

    我有一个文本文件 其中包含 7 列数据 格式如下 18030 AAJ51 FTO rs9939609 C 30090620 10 A T 18030 AAJ51 CAT rs1001179 C 11468118 10 C C 18030 A
  • 比较不同文件中的列并打印那些不匹配的列

    我有两个文件 file1 和 file2 我想将 file1 的几列 1 2 3 和 4 与 file2 的几列 1 2 3 和 4 进行比较 并打印 file2 中与 file1 中任何行都不匹配的那些行 E g file1 aaa bb
  • BASH - 随机排列文件中字符串中的字符

    我有一个文件 filename txt 具有以下结构 gt line1 ABC gt line2 DEF gt line3 GHI gt line4 JKL 我想打乱字符串中的字符not开始机智 gt 输出将 例如 如下所示 gt line
  • Bash 脚本问题

    我可以很好地运行这个命令 并得到我想要的输出 ifconfig eth0 grep HWaddr awk print 5 但是 当我将命令设置为变量并打印该变量时 出现错误 CASS INTERNAL ifconfig eth0 grep
  • Linux 文本文件操作

    我有一个格式的文件 a href a href a href a href 我需要选择 之后但 之前的文本 并将其打印在行尾 添加后 例如 a href http www wowhead com search Su a a a a a
  • 如何在正则表达式之后打印单词但不打印相似的单词?

    我想要一个 awk 或 sed 命令来打印正则表达式之后的单词 我想找到一个单词后面的单词 但不是看起来相似的单词 该文件如下所示 somethingsomething X Windows Icon xournal somethingsom
  • 使用正确的头打印文件名

    我想获取当前目录中的文件名 使得文件的第一行等于myWord 我想结合find type f命令与 exec选项与head 1 filename但无济于事 有没有一些聪明的 单行的解决方案来解决这个问题 您可以使用find with awk
  • awk: hping: 打印 icmp 发起/接收之间的差异

    我有以下输出hping http ports su net hping在 OpenBSD 上 hping icmp ts www openbsd org HPING www openbsd org re0 129 128 5 194 icm
  • 从 csv 文件中删除特定列,保持输出上的相同结构[重复]

    这个问题在这里已经有答案了 我想删除第 3 列并在输出文件中保留相同的结构 输入文件 12 10 10 10 10 1 12 23 1 45 6 7 11 2 33 45 1 2 1 2 34 5 6 I tried awk F 3 fil
  • 对重复的名称添加双引号

    我想从文件中找到重复的名称 如下所示 并用 标记它们 file James Miki 123 456 7890 Wang Tai 234 563 6879 James Miki 123 456 7890 输出希望看起来像 James Mik
  • 如何将查找和替换限制为 CSV 中的一列?

    我有一个 4 列 CSV 文件 例如 0001 fish animal eats worms I use sed对文件进行查找和替换 但我需要将此查找和替换限制为仅在第 3 列中找到的文本 如何让查找和替换仅发生在这一列上 您确定要使用se
  • Bash + sed/awk/cut 删除第 n 个字符

    我试图删除每行的第 6 7 和第 8 个字符 下面是包含文本格式的文件 实际输出 cat test 18 40 12 172 16 70 217 UP 18 42 15 172 16 70 218 DOWN 格式化后如下所示 cat tes
  • 用于编辑 /etc/sudoers 文件的正则表达式模式

    我想删除 etc sudoers 文件中的 uncommnet 轮组 那么我应该使用什么正则表达式模式 cat etc sudoers Allows members of the sys group to run networking so
  • 打印文件的每第 n 列

    我有一个相当大的文件 有 255 个逗号分隔的列 我只需要打印出每第三列 我正在尝试这样的事情 awk for i 0 i lt NF i 3 print i file 但这似乎不是解决方案 因为它只打印到一长列 有人可以帮忙吗 谢谢 这是
  • AWK 错误:尝试在标量上下文中使用数组

    我正在学习AWK 这是一个简单的代码片段 我尝试将字符串拆分为数组并迭代它 BEGIN split a b c a for i 1 i lt length a i print a i 运行此代码时 我收到以下错误 awk awk txt 4
  • AWK 将十进制转换为二进制

    我想使用 AWK 将文件中的十进制数字列表转换为二进制 但似乎没有内置方法 示例文件如下 134218506 134218250 134217984 1610612736 16384 33554432 这是一个 awk 方式 为您的乐趣而函
  • 向 CSV 文件添加新列

    我有一个 CSV 文件 如下所示 12345 TestTest 1 2 TestTest 我想将日期 例如 YYYY MM DD HH MM SS 添加到 CSV 文件的开头或结尾 正如您在上面的示例中所看到的 双引号 包含列上的值 逗号

随机推荐