Linux下对多个文件进行排序

2024-05-02

我有多个(很多)文件;每个都非常大:

file0.txt
file1.txt
file2.txt

我不想将它们合并到一个文件中,因为生成的文件将超过 10 场演出。每个文件中的每一行都包含一个 40 字节的字符串。现在字符串的排序相当好(大约 1:10 的步长是值的减少而不是增加)。

我想要订购的线路。 (如果可能的话就地?)这意味着从末尾开始的一些行file0.txt将被移动到开头file1.txt反之亦然。

我正在 Linux 上工作,而且对它还很陌生。我知道关于sort命令用于单个文件,但我想知道是否有一种方法可以对多个文件进行排序。或者也许有一种方法可以用较小的文件创建一个伪文件,Linux 会将其视为单个文件。

我所知道的可以做到: 我可以单独对每个文件进行排序并读入file1.txt找到大于最大的值file0.txt(并类似地从末尾抓取行file0.txt),加入然后排序..但这很痛苦并且假设没有值file2.txt属于file0.txt(但就我而言不太可能)

Edit

需要明确的是,如果文件如下所示:

f0.txt
DDD
XXX
AAA

f1.txt
BBB
FFF
CCC

f2.txt
EEE
YYY
ZZZ

我要这个:

f0.txt
AAA
BBB
CCC

f1.txt
DDD
EEE
FFF

f2.txt
XXX
YYY
ZZZ

我不知道执行就地排序的命令,但我认为更快的“合并排序”是可能的:

for file in *.txt; do
    sort -o $file $file
done
sort -m *.txt | split -d -l 1000000 - output
  • The sortfor 循环中确保输入文件的内容已排序。如果不想覆盖原来的,只需更改后面的值即可-o范围。 (如果您希望文件已经排序,您可以将排序语句更改为“仅检查”:sort -c $file || exit 1)
  • 第二sort有效地合并输入文件,同时保持输出排序。
  • 这通过管道传输到split命令然后将写入带后缀的输出文件。注意-特点;这告诉 split 从标准输入(即管道)而不是文件中读取。

另外,这里是合并排序如何工作的简短摘要:

  1. sort从每个文件中读取一行。
  2. 它对这些行进行排序并选择应该排在第一位的行。该行被发送到输出,并从包含该行的文件中读取新行。
  3. 重复步骤 2,直到任何文件中都不再有行。
  4. 此时,输出应该是一个完美排序的文件。
  5. Profit!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux下对多个文件进行排序 的相关文章

随机推荐

  • 在 Elasticsearch 中对具有一个值的属性进行多个值查询

    我正在尝试在这个查询的基础上进行一些构建 我正在搜索的索引还有一个带有 id 的 实体 字段 因此 一些记录将具有 实体 16 实体 156 等 具体取决于实体的 ID 我需要以这样的方式扩展此查询 以便可以传递数组或某些值列表 例如 te
  • 删除键空间挂起

    问题 drop keyspace MyKeyspace hangs 环境 这是 virtualbox 中的 Ubuntu 12 04 64 位 运行单个 Cassandra 实例 在开发计算机上 卡桑德拉是 1 1 6 myuser myh
  • 在 .NET 中使用 try-catch 进行流量控制是否“不好”?

    我刚刚在一个项目中发现 try myLabel Text school SchoolName catch myPanel Visible false 我想与开发人员交谈而不是写这个 说会引发空异常 因为school理论上可能为空 而不是my
  • CSS 选择器:id 或类中的第一个 div

    用于选择类中或具有特定 id 的第一个 div 的正确 CSS 选择器是什么 对于父 子元素来说 这似乎要容易得多 但我还没有找到简单元素的任何内容 更新 解决方案 我发现的最干净 最兼容的解决方案是 class class 它选择前一个类
  • 如何在不使用完整备份的情况下使用生产数据刷新 SQL Server 测试实例

    我有两台 MS SQL 2005 服务器 一台用于生产 一台用于测试 并且两台服务器的恢复模型均为 完整 我将生产数据库的备份恢复到测试服务器 然后让用户进行更改 我希望能够 回滚对测试 SQL 服务器所做的所有更改 应用自测试服务器最初恢
  • C# 调用返回结构的 C++ DLL 函数

    我有一个 C dll 它定义了一个结构体和一个 dll 调用 如下所示 typedef const char FString typedef struct FString version FString build no FString b
  • 使用 webbrowser 控件 c# 检测网页何时完全加载

    我正在使用一个WebBrowsercontrol 有一个事件称为DocumentCompleted 该事件会针对网页中的每个框架以及加载的所有子文档 例如 JS 和 CSS 触发 我的问题是如何检测此事件的最后一个条目 我的意思是如何检测页
  • iPhone / .NET WCF 互操作性

    我正在构建一个 NET Web 服务 和一个将使用这些服务的 iPhone 应用程序 我很好奇是否有任何构建两者之间交换数据的协议的最佳实践 对于我来说 基于 SOAP 的 Web 服务对于 iPhone 应用程序来说太沉重了 也许可以用
  • 在 Java EE 应用程序开发中使用 Docker

    我将添加300点作为赏金 我最近开始仔细研究 Docker 以及如何使用它来更快地让团队的新成员启动并运行开发环境 以及将新版本的软件交付到生产环境 我有一些关于如何以及在什么阶段将 Java EE 应用程序添加到容器的问题 据我所知 有多
  • 每个屏幕方向的文本大小不同?

    我正在开发一个计算器 在横向上我添加了更多按钮 因此每个按钮都会变得更小以适应额外的按钮 此时 我只是使用较小的字体大小 以便它们在横向模式下适合较小的按钮 但是我希望纵向上的文本比横向上的文本更大 我一直在尝试找出一种根据屏幕方向使用不同
  • 如何删除构建产品

    是否可以自动删除由生成的构建产品setup py脚本基于设置工具 我刚刚开始一个新的 Python 项目 这是我第一次使用设置工具作为一名开发人员 所以我可能会犯错 当我使用构建项目时python setup py bdist 三个目录 b
  • Java 安全管理器完全禁用反射

    我在 Stackoverflow 上阅读了很多关于这个问题的问题 但无法停止找到我的问题的解决方案或答案 如果已经有一个 如果有人给出提示 我将不胜感激 我的问题是是否可以完全禁用不可信代码的反射 功能类似于getDeclaredMetho
  • CSV 损坏,如何修复?

    我正在尝试解析 CSV 我想将它放入数据库或只是用 JavaScript 解析它 但由于语法损坏 任何一种方法都会失败 我的整个 CSV 文件在这里 https gist github com 1023560 https gist gith
  • RTIMER_NOW() 和clock_time() 之间的Contiki 区别

    我想知道之间的区别 RTIMER NOW and clock time 功能 我可以将它们返回的值存储在 int 变量中吗 它们返回的是整个模拟的时间还是调用它们的单个节点的时间 如果一个节点在模拟中第一个事件发生后 5 秒启动其主进程 这
  • 如何在谷歌地图的边缘创建填充

    我有一个非常繁忙的谷歌地图应用程序 我正在尝试在地图的外边缘周围创建一个 缓冲区 以便谷歌地图命令不会把东西放在那里 我的解决方案是创建不可见的 div 并将它们作为控件添加到地图中 每个边缘一个 这似乎很有效 因为所有谷歌命令都会看到它们
  • 无法覆盖 Rustup 工具链以自定义构建 iOS 工具链

    我正在用我的 Rust 版本创建我自己的工具链 我需要它与 iOS 架构进行交叉编译 当尝试设置默认工具链或覆盖当前目录的工具链时 我收到有关工具链名称的错误 以下是我创建这个新工具链所采取的步骤 创建 Rustup 工具链 rustup
  • Twitter Bootstrap 2:如何获得响应式设计以将侧边栏放在底部而不是顶部?

    Twitter 的 Bootstrap 2 http twitter github com bootstrap 最后添加了原生响应式设计 但是 默认情况下 当浏览器宽度低于最小宽度时 它将侧边栏放在顶部 我可以看到这对于许多网站来说是如何工
  • 执行 rebase 后,Git 提交会在同一分支中重复

    我理解 Pro Git 中提出的场景是关于变基的危险 https git scm com book en v2 Git Branching Rebasing rebase peril 作者基本上告诉你如何避免重复提交 不要对已推送到公共存储
  • Flex,连续扫描流(来自套接字)。我是否错过了使用 yywrap() 的某些内容?

    使用 Flex 进行模式识别 在基于套接字的扫描仪 连续流 上工作 Flex 找不到与 数组边界 重叠的匹配项 所以我实现了 yywrap 来设置新的数组内容 一旦 yylex 检测到 它将调用 yywrap 到目前为止还没有成功 基本上
  • Linux下对多个文件进行排序

    我有多个 很多 文件 每个都非常大 file0 txt file1 txt file2 txt 我不想将它们合并到一个文件中 因为生成的文件将超过 10 场演出 每个文件中的每一行都包含一个 40 字节的字符串 现在字符串的排序相当好 大约