命令行“sort | uniq -c | sort -n”的替代方法

2024-03-09

I use sort | uniq -c | sort -n多年来,但今天它失败了,因为我的输入文件是 10 GB 并且我的/tmp宽度为 1 GB:

sort: write failed: /tmp/sortmIGbL: No space left on device

因此,我正在寻找一种适合日常使用的有效替代方案:

  • awk可以使用,但没有排序的关联数组

  • perl似乎是一个不错的选择,但是来自 perlmonks.org 的 10 年前的解决方案 http://www.perlmonks.org/?node_id=249475似乎不起作用

    no warnings;
    $^W=0;
    open my $in, $ARGV[0] or die "Couldn't open $ARGV[0]:$!";
    my ($buffer, %h) = ''; keys %h = 1024*500;
    while (sysread($in, $buffer, 16384, length $buffer)) {
        $h{$1}++ while $buffer =~ m[^(?:.+?\|){9}([^|]+)\|]mg;
        $buffer = substr($buffer, rindex($buffer, "\n"));
    }
    print scalar keys %h;
    

如何获得与以下相同的结果sort | uniq -c | sort -nr | head对于非常大的文件?

  • 当我使用 Linux/Cygwin/Solaris/*BSD/...时,我对任何想法持开放态度(可移植与否)
  • 您可以自由使用您想要的脚本语言(awk/perl/...)

输入示例

a
BB
ccccc
dddddddd
a
BB
a

可能的输出之一

    3 a
    2 BB
    1 dddddddd
    1 ccccc

首先sort在你的命令链中是使用所有资源的那个。通过获得独特的线条来减少问题集first,然后排序:

perl -ne '
    $count{$_}++;
    END {
        print "$count{$_} $_" for sort {
            $count{$b} <=> $count{$a} || $b cmp $a
        } keys %count
    }
' input.txt

您有 66,000 个 7 字节的唯一行,因此散列键占用的内存将为每个标量的 66,000 * 56 字节 = 3,696,000 字节的键。这不包括计数和哈希的开销,但毫无疑问,这种方法很容易就能达到目的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

命令行“sort | uniq -c | sort -n”的替代方法 的相关文章

  • 直接选择排序与交换选择排序

    有什么区别直接选择排序 vs 交换选择排序 今天我陷入了一场争论 我的教授在他的讲义中使用了这两个术语 维基百科和任何教科书或网站都会为您提供的选择排序就是他所说的 交换选择排序 我以前从未听说过 交换选择排序 这个术语 仅 选择排序 并且
  • 如何使用我在 github 中发布的 bash 脚本执行 chsh?

    我有一个要点 我总是用它来在新服务器上安装我需要的软件包 http gist github com 4372049 http gist github com 4372049 我需要做的就是通过 ssh 在新服务器中输入以下内容 bash c
  • Backbone Marionette CompositeView 排序列表 - 在添加时呈现额外的模型

    这是小提琴 http jsfiddle net QhQ8D 10 http jsfiddle net QhQ8D 10 代码在下面 制作一个聊天应用程序 需要一个排序的 连接的用户列表 名称上带有比较器的图形集合连接到 CompositeV
  • 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
  • 角度垫排序不适用于带点表示法的 matColumnDef

    我正在尝试按列对表进行排序 当我必须过滤另一个结果中的结果时 就会出现问题 我尝试通过括号表示法和点表示法访问该属性 但没有给出结果 还将最终节点放置在 matColumnDef 中 但失败 因为有 2 列同名 table table
  • 如何从数据框中删除少于 5 个观察值的个体 [重复]

    这个问题在这里已经有答案了 为了澄清这个问题 我将简要描述数据 中的每一行data frame是一个观察值 列代表与该观察值相关的变量 包括 观察到什么个体 观察时间 观察地点等 我想排除 过滤观察值少于 5 个的个体 换句话说 如果 in
  • 如何对 Data::Dumper 的输出进行排序?

    我想转储对象和散列的值 但它总是乱序打印键 如何按 递归 排序顺序转储键 use Data Dumper print Dumper obj Set Data Dumper Sortkeys 1获取 Perl 的默认排序顺序 如果要自定义顺序
  • 如何对STL向量进行排序?

    我想排序一个vector vector
  • 计算数组中的唯一元素而不排序

    在 JavaScript 中 以下代码将查找数组中的元素数量 假设数组中至少有一个元素 arr jam beef cream jam arr sort var count 1 var results for var i 0 i lt arr
  • 使用 -T 开关运行时 $ENV{ENV} 不安全

    当我尝试最后一个例子时perlfaq5 如何计算文件中的行数 http perldoc perl org perlfaq5 html How do I count the number of lines in a file 我收到一条错误消
  • 负整数的基数排序

    我正在尝试对整数 包括负整数 实现基数排序 对于非负整数 我计划为数字0 9创建一个10个队列的队列 并实现LSD算法 但我对负整数有点困惑 我现在的想法是继续为它们创建另一个包含 10 个队列的队列 并分别对它们进行排序 然后在最后 我将
  • 在 O(n) 时间内排序?

    我被这个问题困扰了 2周 知道如何处理它吗 令 L 为 n 个不同整数的列表 假设 L 的 x 的元素在 1 750 范围内 设计线性排序算法对 L 的元素进行排序 我已经尝试过插入排序 但我不确定我的方法是否正确 Construct an
  • 如何在bash中使用jq从变量中包含的json中提取值

    我正在编写一个 bash 脚本 其中存储了一个 json 值 现在我想使用 Jq 提取该 json 中的值 使用的代码是 json val code lyz1To6ZTWClDHSiaeXyxg redirect to http examp
  • 如何执行“sudo nvm”?

    在我的 Mac 上 我想将一些需要 su 权限的包迁移到另一个节点版本 我使用 homebrew 安装 nvm 现在我需要执行 sudo nvm 或 reinstall packages将失败 me MacBook sudo nvm sud
  • 重新排列数组键 php [重复]

    这个问题在这里已经有答案了 我有这个数组 Array 15 gt 13 1 16 gt Mark one answer 19 gt You see a car on the hard shoulder of a motorway with
  • 检查一个数字是 int 还是 float

    在perl中 我想检查给定变量是否包含浮点数 为了检查我正在使用的 my Var 0 02 Floating point number if int Var Var floating point number 但上面的代码对于 0 0 不起
  • C++:向 std::sort 提供模板化比较函数

    假设我想让 std sort 根据指针指向的 int 值对指向 int 的指针向量进行排序 忽略那里明显的性能问题 很简单吧 做一个函数 bool sort helper const int a const int b return a l
  • 如何在数组中存储包含双引号的命令参数?

    我有一个 Bash 脚本 它生成 存储和修改数组中的值 这些值稍后用作命令的参数 对于 MCVE 我想到了任意命令bash c echo 0 0 echo 1 1 这解释了我的问题 我将用两个参数调用我的命令 option1 without
  • 添加要在给定命令中运行的 .env 变量

    我有一个 env 文件 其中包含如下变量 HELLO world SOMETHING nothing 前几天我发现了这个很棒的脚本 它将这些变量放入当前会话中 所以当我运行这样的东西时 cat env grep v xargs node t
  • Perl 语言的目标是在运行时生成快速的程序吗?

    最近有朋友告诉我 看 Perl 从来就不是为了快而设计的 真的吗 我能找到的相关信息是来自维基百科 http en wikipedia org wiki Perl Overview 该语言旨在实用 易于使用 高效 完整 而不是美观 微小 优

随机推荐

  • Visual Studio 设计器中的抽象 UserControl 继承

    abstract class CustomControl UserControl protected abstract int DoStuff class DetailControl CustomControl protected over
  • Django:如果用户是工作人员,如何排除表单字段?

    如果用户不是员工 如何排除表单字段 我尝试了这个 但没有成功 给出了一个错误 global name user is not defined class PostForm ModelForm class Meta model Photo e
  • API 来比较 AST? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有一个开源java api允许比较java源代码的两个抽象语法树 我想看看两个语法树之间的差异 类
  • 关键字 CONSTRAINT 在此 CREATE TABLE 语句中起什么作用

    我正在学习如何将 sqlite3 与 python 一起使用 我所关注的教科书中的示例是一个数据库 其中每个国家 地区记录都有一个地区 国家 地区和人口 书上说 以下代码片段使用 CONSTRAINT 关键字来指定 表中没有两个条目是 所创
  • 使用 Javascript 的 8 位异或校验和

    我正在尝试模仿 Windows 应用程序格式化消息并发送通过 USB 通过 UART 传输到显示该消息的设备 该应用程序计算checksum并将其粘贴到消息后面 否则设备将不会接受该命令 校验和不是 crc8 校验和 但它是什么 使用 US
  • 使用 powershell 从路径获取最新创建的文件夹

    如何使用 Windows PowerShell 从路径获取最新创建的文件夹 我有路C temp我想在此路径中找到最近创建的文件夹 PowerShell 主要与管道一起工作 因此您编写的大部分内容将包括创建表示某些信息的对象 以及过滤和操作它
  • 查找最近一小时内产生的记录

    我有一个smalldatetime字段命名myTime创建记录时进行记录 我需要选择过去一小时内创建的记录的语法 我认为会是 and DATEDIFF hh datePart hh myTime DatePart hh GETDATE lt
  • 是否可以保留自定义元素的内部 html?

    使用自定义元素 我想对自定义元素内的元素进行样式设置 但是当我定义该元素时 除了影子 dom 之外的所有内容都会消失 如何将内容从元素移动到 Shadow dom 我已经有一个包装元素 div class wrapper 在阴影内 但尝试使
  • Keras:将预测与使用标准化数据训练的模型结合使用?

    我正在 Keras 中创建一个深度神经网络 以使用表格数据执行 NN 回归 最佳实践是标准化输入和输出序列 我也想使用predict函数提供各种输入集的模型输出估计 如果训练数据已标准化 我想我还需要标准化predict使用相同的缩放参数的
  • 温莎城堡延迟加载服务

    有时 我发现自己处于这样的情况 只有在满足特定条件时才需要解决服务 例如 用户可以选择发送电子邮件或短信通知 我想根据用户的选择来延迟加载电子邮件或短信服务 这样我就不必同时加载它们并浪费资源 例如 如果用户有 10 个选项怎么办 我遇到的
  • Node.js Express - 如何将 Stylus .styl 文件编译为 CSS

    我正在尝试从 Balloons http balloons io 开始构建一个应用程序 它使用 Backbone js 和 Express 来设置 UI 我从未使用过这些框架 而且我很难真正做出改变 据我了解 styl 文件被编译成 CSS
  • /etc/lsb-release 与 /etc/os-release

    我需要使用 bash 找出我正在运行的 Linux 发行版 成立这一页 https www cyberciti biz faq find linux distribution name version number 这非常有帮助 但是我的系
  • XSLT 和 xpath v1.0 查找重复项并聚合

    我想知道是否有一种方法可以在 xml 中搜索重复项 然后在找到时将所有重复项聚合到一个节点 埃克斯
  • 为什么我的 PDO 不起作用?

    我开始使用 PDO 并使用 PDO 成功连接到 MySQL 但是 当我尝试从数据库中选择内容时 什么也没有发生 没有任何回声 即使我在该表中有记录 并且列 username 存在 我的 PHP 日志中没有错误 我正在使用 MAMP 并且所有
  • 如何在 Objective-C 中编写调用 `super` 实现的 c 函数? [复制]

    这个问题在这里已经有答案了 我需要实现一个通用 C 函数 它将调用super的实现并返回值 我将在运行时将此函数注入到目标类中 目标选择器的参数数量可以是任意数量 并且只有在运行时才知道 我实现了一个C函数 如下所示 但我不知道如何调用su
  • 根据另一个数组的值对 JS 数组进行排序的最快方法?

    有一些类似的帖子 但我找不到任何可以完全解决这个特定问题的内容 我有两个配对值数组 var A 0 5 0 6 0 5 0 7 0 8 0 1 var B a b c d e f note a 0 5 b 0 6 c 0 5 d 0 7 e
  • 单击部分透明图像上的透明区域

    Given some shape I would like it to be clickable on its filled parts and not clickable thus clicking through to the elem
  • 当我使用没有 OleDBConnection 对象的 OleDbDataAdapter 对象时,为什么我的 .NET 2.0 应用程序在 .NET 4.0 下崩溃?

    这是一个使用 VS 2005 编写的 NET 2 0 应用程序 它在运行 NET 2 0 的系统上运行良好 但在运行 NET 4 0 的系统上会严重崩溃 这是代码的关键部分 string selectCommand1 string conn
  • Backbone 和 bindAll:“func 未定义”

    我在使用 bindAll 时遇到问题 我得到的错误是func is undefined 对我做错了什么有什么想法吗 我都尝试过 bindAll 因上述错误而失败 并且 个人binds 不起作用 window test Backbone Vi
  • 命令行“sort | uniq -c | sort -n”的替代方法

    I use sort uniq c sort n多年来 但今天它失败了 因为我的输入文件是 10 GB 并且我的 tmp宽度为 1 GB sort write failed tmp sortmIGbL No space left on de