首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在awk中数行基在几个范围内?

如何在awk中数行基在几个范围内?
EN

Stack Overflow用户
提问于 2015-12-31 21:04:36
回答 1查看 404关注 0票数 2

我有一个有2列的文件,如下所示:

代码语言:javascript
运行
复制
mm6 8
mm6 1
mm6 15
mm6 30
mm9 2
mm6 20
mm6 12

我试图在awk中创建一个脚本,以提取一个范围内有多少行。现在我有:

代码语言:javascript
运行
复制
awk    { if ($2 >= 1 && $2 <= 20) print $1 " " $2}

在输出中,我得到了属于该范围的所有行。

代码语言:javascript
运行
复制
mm6 8
mm6 1
mm6 15
mm9 2
mm6 20
mm6 12

但是现在我试着制作awk来计算每10个单元中有多少行,直到它达到一个确定的值,例如100行。

我预期会有这样的输出:

代码语言:javascript
运行
复制
mm6 10 2
mm6 20 3
mm9 10 1

说明: mm6在1-102之间,mm6在11-2 0 3之间,mm9在1-10 1之间。

我被困住了,有人能帮忙吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-31 23:28:37

awk去营救!

使用您的第一个输入

代码语言:javascript
运行
复制
$ awk '{a[$1 FS 10*int(($2-1)/10)+10]++}
    END{for(k in a) print k,a[k]}' file                       

mm6 10 2
mm6 20 3
mm6 30 1
mm9 10 1

可以在之前或之后添加筛选器。

说明:我们创建一个键来计数和打印键的计数在末尾。键分为两个部分,第一部分是标识符,第二部分是范围到回收箱的映射。例如,要映射0-9到0,10-19到1,可以除以10并使用整数部分。在除以10之前,你的范围是从1-10减去一个;你的垃圾箱是10的倍数,所以乘以10。你也使用上限,所以加10。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34551576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档