将 STDIN 拆分为多个文件(如果可能的话压缩它们)

2024-04-07

我有一个程序(gawk)将数据流输出到它的STDOUT。 处理的数据实际上有 10 GB。 我不想将其保留在单个文件中,而是将其分成多个块,并可能在保存之前对每个文件应用一些额外的处理(如压缩)。

我的数据是一系列记录,我不想拆分将记录减半。 每条记录都匹配以下正则表达式:

^\{index.+?\}\}\n\{.+?\}$

或者为了简单起见,可以假设两行(首先是不均匀的,然后是从流的开头编号的)总是创建一条记录。

Can I:

  • 使用一些标准的linux命令通过定义块的首选大小来分割STDIN?不需要精确给定记录变量大小不能保证它。或者,如果定义的话,仅记录数。按尺寸是不可能的
  • 压缩每个块并存储在一个文件中(名称中带有一些编号,如 001、002 等..)

我已经意识到像这样的命令GNU并行 https://www.gnu.org/software/parallel/man.html or csplit但不知道如何将其组合在一起。 如果无需为其编写自定义 Perl 脚本即可实现上述功能,那就太好了。然而,这可能是另一个最后的解决方案,但同样不确定如何最好地实施它。


GNU Parallel 可以将标准输入分割成记录块。这会将 stdin 分割成 50 MB 的块,每条记录为 2 行。每个块将被传递到 gzip 并压缩为名称 [chunk number].gz:

cat big | parallel -l2 --pipe --block 50m gzip ">"{#}.gz

如果您知道第二行永远不会以“{index”开头,您可以使用“{index”作为记录开始:

cat big | parallel --recstart '{index' --pipe --block 50m gzip ">"{#}.gz

然后,您可以通过以下方式轻松测试拆分是否正确:

parallel zcat {} \| wc -l ::: *.gz

除非您的记录长度都相同,否则您可能会看到不同的行数,但都是偶数。

观看介绍视频以进行快速介绍:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1 https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

浏览本教程 (man parallel_tutorial)。你命令行 会因此而爱你。

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

将 STDIN 拆分为多个文件(如果可能的话压缩它们) 的相关文章

  • 在 MATLAB 中重命名文件

    我正在尝试以编程方式重命名工作目录中的文件a temp txt to b hello txt 您建议如何这样做 MATLAB中有一个简单的文件重命名函数吗 我认为您正在寻找 MOVEFILE
  • 追加文件会导致覆盖 (Java)

    因此 我正在创建一个 CSV 文件 每次发生操作时我都想将数据写入该文件 我遇到的问题是 第二次输入时它会覆盖数据 如何将数据添加到文件末尾 public boolean save to csv check if directory exi
  • C++ 模板和头文件[重复]

    这个问题在这里已经有答案了 因此 我听说 C 模板不应分为头文件 h 和源文件 cpp 例如 这样的模板 template
  • 在没有 paramiko 的情况下通过 python 运行 ssh 时,“伪终端不会被分配,因为 stdin 不是终端”

    我在 Python 中运行 ssh 而不使用像 Paramiko 这样的外部库 我这样做有我的理由 而不是通过外部库 基本上我正在做subprocess Popen ssh t bla command 执行此操作时我收到以下消息 Pseud
  • getExternalCacheDir() 在 Android 上如何工作?

    据我了解 我们将经常访问的对象缓存在比普通磁盘读取更容易访问的内存段中 getExternalCacheDir 相对于getCacheDir 指向外部文件系统 在我看来这是正常的getExternalFilesDir Android 如何优
  • 检查字符串中是否存在所有字符值

    我目前正在做这项任务 但我被困住了 目标是读取文件并查找文件中的字符串中是否存在这些字符值 我必须将文件中的字符串与作为参数放入的另一个字符串进行比较 但是 只要每个字符值位于文件中的字符串中 那么它就 匹配 示例 输入和输出 a out
  • 使用 TcpClient 通过 C# 通过 TCP 发送多个文件

    我正在尝试使用 C TcpClient 通过 TCP 发送多个文件 对于单个文件来说它效果很好 但是当我有多个文件时 它只发送第一个文件 这是我的代码 发送文件 try TcpClient tcpClient new TcpClient N
  • 如何压缩和解压文件?

    如何压缩和解压 DDMS 中已有的文件 data data mypackage files 我需要一个简单的例子 我已经搜索过与 zip 和 unzip 相关的内容 但是 没有一个例子可供我参考 谁能举个例子 提前谢谢 查看 zip 功能的
  • Java IO 文件前缀字符串太短 - 但事实并非如此

    尝试从一个目录创建简单的 tar gz 文件 有我的代码 File destinationFile new File var www swOfflineFeeds Companies 2 File sourceFile new File v
  • 如何读取文件,将数据放入JTable中,然后修改单元格/删除行并将数据保存到文件中? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要从 txt 文件中读取日期并将其放入 GUI 中的 JTable 中 然后修改一些记录或删除一些行并将新数据保存到文件中 我可以
  • 有没有更简单的方法来分割/重建字符串?

    目前我正在使用String split 像这样 String tmp props get i getFullName split String name for int j 1 j lt tmp length j if j gt 1 nam
  • 如何将完整的日期格式拆分为日期和时间?

    我有很多格式为我的示例所示的字符串 我必须解析它们 我正在尝试确定今天是哪根弦 我的问题是 时间快到了 我只需要比较那个日期 接下来我想检查时间是否在 after 和 before 的两个时间戳 HH mm ss 之间 但存在问题 日期几乎
  • 将数据框中的每个 x 个字符拆分为字符串

    我知道这里有一些关于每隔一段时间分割一个字符串的答案nth字符 例如this one https stackoverflow com questions 23208490 split each character in r and this
  • 用 while 循环打开文件 - C [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 各位程序员大家好 我的问题不大 我不知道如何打开具有不同数字 在文件名中 的文件 从 1 到存在的任意数量的文件 例如 我有两个 或最
  • 删除文件的最后 10 个字符

    我想删除文件的最后 10 个字符 说一个字符串 hello i am a c learner 是文件内的数据 我只是希望该文件是 hello i am a 文件的最后 10 个字符 即字符串 c learner 应在文件内消除 解决方案 将
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • 使用通配符分割字符串

    我有一个变量字符串 其中包含我需要的值和拆分器 问题是 字符串的长度是可变的 分割器的类型也是可变的 它们通过 XML 文件到达 字符串将如下所示 1 20 51 2 name jpg 但也可以是 1 20 51 name jpg 坚实的因
  • 在 C++ 中检查文件是否存在的最佳方法是什么? (跨平台)

    我已阅读以下答案检查 C 中文件是否存在的最佳方法是什么 跨平台 https stackoverflow com questions 230062 whats the best way to check if a file exists i
  • 从包含大量文件的目录中检索文件

    我的目录包含近 14 000 000 个 wav 格式的音频样本 所有普通存储 没有子目录 我想循环浏览文件 但是当我使用DirectoryInfo GetFiles 在该文件夹上 整个应用程序冻结了几分钟 可以用另一种方式完成吗 也许读取

随机推荐

  • Android Linkify 文本 - 单一文本视图中的 Spannable 文本 - 就像 Twitter 推文一样

    我有一个 textView 和类似的文本 这是简单的文本KeyWord和Link浏览 在上面的文字中我想做 单击链接即可打开该 URL AND 单击该关键字在我的应用程序中打开一个新活动 also 甚至整个 TextView 都有一个单击事
  • 角度材质工具栏阴影

    我是材料2新手 我试图将主应用程序工具栏固定在屏幕顶部 问题是标高无法正常工作 内容隐藏了工具栏的阴影 我 这是我的 HTML 代码 app content height calc 100 64px overflow auto
  • Quartz属性文件传入环境变量

    我正在尝试将环境变量添加到我的石英属性文件中 但它没有正确加载 这是我的quartz properties org quartz scheduler instanceName scheduler org quartz scheduler i
  • 使用 Mongoose 更新字段子集

    当仅指定 MongoDB 文档的部分字段时 如何使用 Mongoose 更新该文档 即更新指定字段 但保留任何其他现有字段不变 在以下路由处理程序中 用户可以选择要提供的字段 以下作品有效 但使用if感觉报表不是特别大 有更优雅的解决方案吗
  • AWK:打印一个字段中具有最大值的所有行每个其他字段,包括具有最大值和多个列的相同行

    我很感激许多贡献者迅速提供了许多解决方案 AWK 打印一个字段中具有最大值的所有行每个其他字段 包括具有最大值的相同行 https stackoverflow com questions 75392860 awk print all row
  • 在 Alpine 中安装旧版本的软件包

    最近 9 月 5 日 Alpine Linux 软件包存储库已更新为 postgresql client 12 4 我在 Dockerfile 中引用版本 12 3 apk add postgresql client 12 3 现在那个版本
  • 我什么时候应该担心对齐问题?

    我最近了解了一些关于对齐的知识 但我不确定在哪些情况下它会成为问题 有两种情况我想知道 第一个是使用数组时 struct Foo char data 3 size is 3 my arch is 64 bit 8 bytes Foo arr
  • 将 .sort 与 PyMongo 一起使用

    使用 PyMongo 当我尝试检索按 数字 和 日期 字段排序的对象时 如下所示 db test find number gt 1 sort number 1 date 1 我收到此错误 TypeError if no direction
  • 内核模块和SCHED_RR线程的优先级

    我有一个嵌入式 Linux 平台 Beagleboard 运行 Angstrom Linux 连接了两个设备 通过 USB 连接的激光测距仪 Hokuyo UTM 30 通过 SPI 连接的定制外部板 我们编写了一个Linux内核模块 负责
  • python中逆ERF函数的命令[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 在Python中计算函数的逆误差函数 erf 的命令是什么 需要导入哪个模块 For the inverse误差函数 scipy speci
  • Highcharts / Highstock 阶梯线没有垂直“过渡”线?

    是否可以省略 方波 线中的垂直线 我想你可以称之为水平线 这是一个例子 实现这种外观的最简单方法是使用带有自定义 线 符号的散点图 define a custom line symbol Highcharts SVGRenderer pro
  • 免费的非消耗性应用内购买,包含 Apple 服务器上托管的内容

    包含 Apple 服务器上托管内容的非消耗性应用内购买是否可以免费 我在文档中找不到任何有关此内容的信息 并且由于您可以在 iTunes connect 中将应用内购买设置为免费 所以我认为这是可能的 我在 iTunes connect 上
  • 创建反向剪辑路径 - CSS 或 SVG

    我正在尝试创建本质上与 CSS 剪辑路径相反的内容 使用 Clip path 时 图像或 div 会被剪切 以便仅保留您指定的形状 而背景的其余部分将被有效删除 我希望这样 如果我剪辑一个形状 它基本上会在最上层打一个洞并删除形状 而不是背
  • EntityFramework Core - 复制实体并将其放回数据库

    是否有最佳实践来复制实体 根据用户输入对其进行一些更改 然后将其重新插入数据库 其他一些 Stackoverflow 线程提到 即使数据库中存在相同的主键 EF 也会为您处理插入新对象 但我不太确定 EF Core 是如何处理它的 每当我尝
  • 如何在 Plotly 中增加飞机的大小

    Got the 以下代码 https github com tiago peres immersion blob master platforms v2 ipynb import pandas as pd import plotly gra
  • 强制WKWebView显示移动版本

    我试图强制 WKWebView 显示移动版本 我在不同的应用程序版本中得到不一致的结果 但是 Safari 总是正确播种移动设备 我尝试设置 userAgent 似乎没有任何影响视图 实际上 我发现正确的解决方案是在启动应用程序时清除缓存
  • PHP正则表达式的逻辑运算符AND

    我想在正则表达式中使用一种逻辑运算符 AND 我试过这个 exp1 exp2 但在 PHP 中 不起作用 需要用 PHP 语言编写我的程序 还有其他方法吗 如果所有条件以任意顺序存在 则表达式必须匹配 我不想把每个排列都写成 exp1 ex
  • 如何在 jQuery 中创建链式延迟动画序列?

    考虑拥有以下对象 div span This is div1 span div div span This is div2 span div div span This is div3 span div div span This is d
  • 如何在 v-select 或 v-combobox 上有“全选”选项?

    我们如何有一个全选选项来选择一个中的所有内容v select or a v combobox Vuetify 没有Select all选项v select 但是 您可以使用按钮和方法自己完成 像这样 JS methods selectAll
  • 将 STDIN 拆分为多个文件(如果可能的话压缩它们)

    我有一个程序 gawk 将数据流输出到它的STDOUT 处理的数据实际上有 10 GB 我不想将其保留在单个文件中 而是将其分成多个块 并可能在保存之前对每个文件应用一些额外的处理 如压缩 我的数据是一系列记录 我不想拆分将记录减半 每条记