V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Tardis07
V2EX  ›  Linux

Linux Shell 如何分类统计标准输出结果

  •  
  •   Tardis07 ·
    Tardis07 · 11 小时 53 分钟前 · 471 次点击

    预期效果如下:

    >>> cat 1.txt                                                                                                                                                                                
    user_A
    user_B
    user_C
    user_A
    user_B
    user_A
    
    >>> cat 1.txt | some_command
    Line	| Times
    ------------------
    user_A	| 3
    user_B	| 2
    user_C	| 1
    
    

    是否存在已知的一个 Linux 工具可以实现这个功能,懒人不想造轮子。

    6 条回复    2025-01-22 20:43:28 +08:00
    yanqiyu
        1
    yanqiyu  
       11 小时 49 分钟前
    虽然没有这么好看,但是 uniq -c 就可以统计出现次数了,之后再按照要求重新排版应该就可以了
    GPLer
        2
    GPLer  
       11 小时 48 分钟前 via Android   ❤️ 1
    sort + uniq + awk 组合实现

    cat 1.txt | sort | uniq -c | sort -nr | awk 'BEGIN {print "Line\t| Times"} {printf "%s\t| %d\n", $2, $1}'

    话说这种需求大模型确实秒了(
    GPLer
        3
    GPLer  
       11 小时 45 分钟前 via Android
    unix 哲学更推荐用多个命令组合来完成某个需求,如果真的需要**一个**工具,可以考虑包装个脚本。(
    NessajCN
        4
    NessajCN  
       11 小时 34 分钟前
    这类需求我一般直接搓个 python 脚本
    d = {}
    with open(sys.argv[1]) as fp:
    for l in fp.readlines():
    k = l.strip("\n")
    if not k in d:
    d[k]=1
    else:
    d[k]+=1
    print("Line\t| Times")
    print("-------------")
    for c,t in d.items():
    print(f"{c}\t| {t}")
    Tardis07
        5
    Tardis07  
    OP
       11 小时 10 分钟前
    @yanqiyu 非常感谢,其实外观倒是无所谓,你的回复让我想起来之前 Linux Shell 去重的操作。目前`xxx | sort | uniq -c`就足以满足我的需求了,非常感谢。
    lazyzhang
        6
    lazyzhang  
       2 小时 58 分钟前
    perl -lne 'BEGIN{print "Line\t|Times\n","-" x 15};$h{$_}++;END{print "$_\t| $h{$_}" for sort keys %h}' 1.txt
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2526 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 15:41 · PVG 23:41 · LAX 07:41 · JFK 10:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.