linux - awk - 列的一半大于 x 的所有行

标签 linux bash awk command-line

正如标题所示,我正在尝试使用 awk 查找大型 tsv 文件中的所有行,其中至少 50% 的列的值大于值 x。

例如 x=5:

9    6    7    2     3
0    1    2    7     6
1    3    8    9    10

应该返回

9    6    7    2     3
1    3    8    9    10

最佳答案

awk 来拯救!

$ awk -v t=5 '{c=0; for(i=1;i<=NF;i++) c+=($i>t)} c/NF>0.5' file

9    6    7    2     3
1    3    8    9    10

关于linux - awk - 列的一半大于 x 的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42487696/

相关文章:

linux - awk 中的变量操作

bash - 获取字符串中的第一个元素

linux - Gitlab 在端口 8080 上

linux - 日志文件不是从服务创建的

bash 函数使用命令、管道和变量处理参数

linux - 使用 awk 或 sed 删除特定字符

linux - 为什么这个 Linux 二进制文件(SCons 输出)没有执行?

python - 在 Ubuntu 中调用 py 导致 collections.abc 弃用警告

linux - find 命令的 "exec"功能可以在后台启动程序吗?

bash - 让远程Shell评估期望ssh脚本中的表达式