首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取bash中某列中唯一值的计数

获取bash中某列中唯一值的计数
EN

Stack Overflow用户
提问于 2011-02-07 21:32:35
回答 3查看 141.5K关注 0票数 109

我有几个以制表符分隔的文件,其中有几列。我想要计算文件夹中所有文件的列中不同值出现的频率,并按计数的降序进行排序(首先是最高的计数)。我如何在Linux命令行环境中实现这一点?

它可以使用任何常见的命令行语言,如awk、perl、python等。

EN

回答 3

Stack Overflow用户

发布于 2011-02-07 23:36:15

要查看第二列的频率计数(例如),请执行以下操作:

代码语言:javascript
复制
awk -F '\t' '{print $2}' * | sort | uniq -c | sort -nr

fileA.txt

代码语言:javascript
复制
z    z    a
a    b    c
w    d    e

fileB.txt

代码语言:javascript
复制
t    r    e
z    d    a
a    g    c

fileC.txt

代码语言:javascript
复制
z    r    a
v    d    c
a    m    c

结果:

代码语言:javascript
复制
  3 d
  2 r
  1 z
  1 m
  1 g
  1 b
票数 171
EN

Stack Overflow用户

发布于 2011-02-08 02:59:16

下面是在shell中实现这一点的方法:

代码语言:javascript
复制
FIELD=2
cut -f $FIELD * | sort| uniq -c |sort -nr

这是bash最擅长的事情。

票数 77
EN

Stack Overflow用户

发布于 2011-02-07 23:04:35

拼音(1.9+)

代码语言:javascript
复制
#!/usr/bin/env ruby
Dir["*"].each do |file|
    h=Hash.new(0)
    open(file).each do |row|
        row.chomp.split("\t").each do |w|
            h[ w ] += 1
        end
    end
    h.sort{|a,b| b[1]<=>a[1] }.each{|x,y| print "#{x}:#{y}\n" }
end
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4921879

复制
相关文章

相似问题

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