使用命令行工具将 JSON 数组拆分为多个文件

2023-11-23

假设我们有一个长度为 5 的 JSON 数组,我们想使用 Linux 命令行工具将该数组拆分为多个长度为 2 的数组,并将分组的项保存到不同的文件中。

我尝试使用jq and split工具(我对任何可以从 bash 脚本执行的方法都很满意):

$ echo '[{"key1":"value1"},{"key2":"value2"},{"key3":"value3"},{"key4":"value4"},{"key5":"value5"}]' | jq -c -M '.[]' | split -l 2 -d -a 3 - meta_
$ tail -n +1 meta_*
==> meta_000 <==
{"key1":"value1"}
{"key2":"value2"}

==> meta_001 <==
{"key3":"value3"}
{"key4":"value4"}

==> meta_002 <==
{"key5":"value5"}

前面的命令将项目正确保存到文件中,但我们需要将它们转换为有效的 JSON 数组格式。我厌倦了--filter option:

$ echo '[{"key1":"value1"},{"key2":"value2"},{"key3":"value3"},{"key4":"value4"},{"key5":"value5"}]' | jq -c -M '.[]' | split -l 2 -d -a 3 - meta2_ --filter='jq --slurp -c -M'
[{"key1":"value1"},{"key2":"value2"}]
[{"key3":"value3"},{"key4":"value4"}]
[{"key5":"value5"}]
$ tail -n +1 meta2_*
tail: cannot open 'meta2_*' for reading: No such file or directory

但是,它会在屏幕上显示输出,但结果不会保留。我尝试转发输出,但收到错误:

echo '[{"key1":"value1"},{"key2":"value2"},{"key3":"value3"},{"key4":"value4"},{"key5":"value5"}]' | jq -c -M '.[]' | split -l 2 -d -a 3 - meta2_ --filter='jq --slurp -c -M > $FILE'
...
split: with FILE=meta2_000, exit 2 from command: jq --slurp -c -M > $FILE

有什么提示或更好的方法吗?

编辑:我尝试使用双引号@andlrc建议:

$ echo '[{"key1":"value1"},{"key2":"value2"},{"key3":"value3"},{"key4":"value4"},{"key5":"value5"}]' | jq -c -M '.[]' | split -l 2 -d -a 3 - meta2_ --filter="jq --slurp -c -M > $FILE"
bash: -c: line 0: syntax error near unexpected token `newline'
bash: -c: line 0: `jq --slurp -c -M > '
split: with FILE=meta2_000, exit 1 from command: jq --slurp -c -M >
$ cat meta_000 | jq --slurp -c -M
[{"key1":"value1"},{"key2":"value2"}]

在 jq 过滤器中构建数组,然后将其拆分为每行文件会更容易。无需额外过滤。

range(0; length; 2) as $i | .[$i:$i+2]

产生:

[{"key1":"value1"},{"key2":"value2"}]
[{"key3":"value3"},{"key4":"value4"}]
[{"key5":"value5"}]

所以把它们放在一起。

$ jq -cM --argjson sublen '2' 'range(0; length; $sublen) as $i | .[$i:$i+$sublen]' \
    input.json | split -l 1 -da 3 - meta2_
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用命令行工具将 JSON 数组拆分为多个文件 的相关文章

  • API 调用时出现 UnicodeEncodeError (json)

    我正在尝试打印此 API 调用的结果 但收到 UnicodeEncodeError 可能是超级菜鸟问题 但非常感谢任何帮助 import http client import json api key hidden connection h
  • 用于读取文件的 Bash 脚本

    不知道为什么最后一行没有从脚本中删除 bin bash FILENAME 1 while read line do cut d f2 echo line done lt FILENAME cat file 1 test 2 test 3 t
  • 将json解析为条形图d3js

    我正在尝试使用 json url 创建条形图 关于印象和时间 我认为我没有正确引用 data data 中的数据 如何从 d3 中的 json 文件访问印象字段 var url https script google com macros
  • 使用 REST 协议和 JSON 数据格式测试 Web 服务的最佳工具是什么? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我是使用 JSON 数据格式测试 REST Web 服务的新手 我尝试了SOUPUI 但不幸的是不支持
  • 如何在 Linux/OS X 上温和地终止 Firefox 进程

    我正在使用 Firefox 进行一些自动化操作 尽管我可以从 shell 打开 Firefox 窗口 但我无法正确终止它 如果我kill火狐进程与kill 3 or kill 2当我下次打开新的 Firefox 窗口时 命令会询问我是否要在
  • 对象数组的 JSON 模式定义

    我见过这个其他问题 https stackoverflow com q 10809459 940217但它并不完全相同 我觉得我的问题更简单 但就是不起作用 我的数据如下所示 loc a value 1 toll null message
  • 将本机图像上传反应为表单数据

    Postman formdata 工作正常 但是返回 http 500 错误 这个块出了什么问题 响应 type default status 500 ok false statusText 未定义 标头 标头 标头 标头 map 确定 f
  • Spring boot 404错误自定义错误响应ReST

    我正在使用 Spring boot 来托管 REST API 即使浏览器正在访问 URL 以及自定义数据结构 我也希望始终发送 JSON 响应 而不是使用标准错误响应 我可以使用 ControllerAdvice 和 ExceptionHa
  • awk 返回两个变量

    现在这就是我正在做的事情 ret ls la awk print 3 9 usr echo ret awk print 1 fil echo ret awk print 2 问题是我没有运行ls我正在运行一个需要时间的命令 因此您可以理解其
  • 如何重命名 bash 函数?

    我正在围绕另一个定义 bash 函数的软件包开发一些方便的包装器 我想用我自己的同名函数替换他们的 bash 函数 同时仍然能够从我的函数中运行他们的函数 换句话说 我需要重命名它们的函数 或者为其创建某种持久别名 当我创建同名函数时 该别
  • 比较linux中的两个未排序列表,列出第二个文件中的唯一项

    我有 2 个包含号码列表 电话号码 的文件 我正在寻找一种列出第二个文件中第一个文件中不存在的数字的方法 我尝试过各种方法 comm getting some weird sorting errors fgrep v x f second
  • 不要将变量内容视为 sed 中的特殊字符

    我有以下内容sed命令 sed i 4i CHANGES CHANGELOG rst 然而 我的 CHANGES变量看起来像这样 title list elem elem 因此 上述命令失败并出现以下错误 sed e expression
  • 如何在 php 中访问名为变量的对象属性?

    以 JSON 编码的 Google API 返回一个如下所示的对象 updated gt stdClass Object t gt 2010 08 18T19 17 42 026Z 任何人都知道我如何访问 t value object gt
  • Google AJAX API - 如何获得 4 个以上结果?

    我使用下面的 google API ajax 来获取特定搜索词的图像 这是在一个WinForms app 下面的链接似乎有效 但它只返回 4 个结果 通过 JSON 有谁知道如何哄得更多吗 显然必须有另一个参数来请求更多或分页结果 但我似乎
  • Bash 字符串之间的比较 - 相等但不相等

    我只想在 Bash 中的两个字符串之间进行非常简单的比较 stat curl Is url head n 1 echo stat if stat HTTP 1 1 200 OK then echo symbol is OK echo sta
  • 从嵌入的谷歌地图中提取标记坐标

    对此还很陌生 所以请耐心等待 我需要从嵌入的谷歌地图中提取标记坐标 示例链接是http www picknpay co za store search http www picknpay co za store search我想提取搜索时地
  • Ctrl-p 和 Ctrl-n 在 Docker 下表现异常

    For the life of me I can t seem to figure out why ctrl p and ctrl n don t work like they re supposed to under the Docker
  • 来自不同级别的一对值根据邻居成员选择一个

    我正在尝试使用 jq 遍历对象数组并将其转换为 csv 我可以做一些选择和 csv 部分 但我正在努力解决的是如何获得Name每个对象的标签值 json 看起来像这样 Groups Instances InstanceType m5 xla
  • 使用 IFS bash 进行 CSV 解析:选择“;”作为分隔符

    我有一个包含 130 列的 CSV 我需要用它来做 3 个 csv 我用 while 和 IFS 循环 因为我需要对每一行的变量进行一些处理 这是我所做的 while IFS read my 130 vars what i do with
  • 如何回忆上一个 bash 命令的参数?

    Bash 有没有办法回忆上一个命令的参数 我通常这样做vi file c其次是gcc file c Bash 有没有办法回忆上一个命令的参数 您可以使用 or 调用上一个命令的最后一个参数 Also Alt can be used to r

随机推荐

  • 如何从段落 python docx 中获取图像(inlineshape)

    我想逐段阅读docx文档 如果有图片 InlineShape 则用它周围的文本处理它 函数 Document inline shapes 将给出文档中所有内联形状的列表 但我想得到一个 如果存在的话 恰好出现在当前段落中 代码示例 from
  • Eclipse 中模板的 Django 标签

    我想知道是否可以在 Eclipse IDE 中为基于 Django 的模板提供自动完成 自动格式化和这些漂亮的功能 主要是为了这些事情 提前致谢 检查此页面以获取 Django Eclipse 插件 http eclipse kacprza
  • 如何使用 Java IO 读取 Windows NTFS 备用数据流?

    我试图让我的 Java 应用程序读取给定路径中的所有数据 文件 目录 元数据等 这还包括 NTFS 称为备用数据流 ADS 的一个奇怪的东西 显然 它就像目录或文件中的第二层数据 您可以打开命令提示符并使用 在ADS中创建文件 例如 C A
  • 如何在eclipse中显示日语字符[重复]

    这个问题在这里已经有答案了 我使用 eclipse Juno 作为 Java IDE 并且在我的 java 代码中注释和日志记录语句都是日语的 eclipse 显示垃圾字符而不是正确的日语字符 我跟着这个帖子解决该问题并在 eclipse
  • 在 Xcode 5 上使用 Boost - Apple LLVM 5.0

    由于只有一个编译器 LLVM 5 0 我在构建 Xcode 5 的 Boost 时遇到了问题 我尝试过使用 c 11 使用 clang 来使用 Homebrew 我尝试过各种想法和脚本 但到目前为止没有一个有效 要为使用 clang llv
  • 在 Django Rest Framework 选项请求中显示过滤器和排序

    我正在使用 Django Rest Framework 我注意到 API 的 Web 可浏览部分有一个名为 选项 的按钮 单击它会显示以下内容 HTTP 200 OK Vary Accept Content Type text html A
  • ASP.NET MVC 4 缩小和背景图像

    我目前正在使用 ASP NET MVC 4 CSS JavaScript 优化器 它与我自己的 CSS JavaScript 配合得很好 但我也想将它与插件一起使用 每个插件都有自己的文件夹 Content css my own css o
  • 上个月的最后一天 - BigQuery

    我正在尝试选择其中时间戳字段 recdate 的日期值高达并包含该月最后完成日期的行 例如 由于现在是 2016 年 7 月 我希望所有行的日期值在 2016 年 6 月 31 日 含 之前 这曾经在 T SQL 中工作得很好 我会使用以下
  • 无法连接到 mySQL 数据库

    所以我在使用 Java 连接 MySQL 时遇到问题 这是我的代码 import java sql Connection import java sql DriverManager import java sql SQLException
  • JQuery 延迟立即拒绝

    使用JQuery Deferred时可以直接调用reject 吗 没有调用异步函数 也许我想在异步函数的开头进行某种测试 如果测试失败我想立即拒绝 请参阅下面的第一个 if 块 function doSomethingAsync Test
  • 用于选择的 Angular 2 RouterLink

    我想使用页面上的选择元素创建导航 在锚标记上使用 RouterLink 指令很简单 但是选择下拉菜单是否有等效的指令 或者我是否需要在我的组件上创建自己的导航方法 以便在我的选择发生更改时调用 a Location a
  • 计时器刻度不增加时间间隔的值

    我想增加计时器滴答事件的值 但它没有增加 不知道我忘记了什么 它只显示1
  • 异步任务“堵塞”

    最近 我开始尝试大规模抓取网站以进行存档 我认为让多个 Web 请求异步工作以加快速度是一个好主意 10 000 000 个页面绝对需要存档 因此我冒险进入并行性的严厉女主人 三分钟后我开始想知道为什么我正在创建的任务 通过Task Fac
  • 在不使用 EF 的情况下在 appsettings.json 中获取多个连接字符串

    刚刚通过迁移我开发的当前 MVC Net 应用程序开始使用 Net Core RC2 在我看来 由于 appsettings json 处理配置的方式 如果我有多个连接字符串 我要么必须使用 EF 来检索连接字符串 要么必须创建为每个连接字
  • 为什么 Promise 的“then()”处理程序会立即执行?

    我想更彻底地了解 Promise 在 JavaScript 中的工作原理 我尝试了以下代码 function delay timeout return new Promise function resolve reject setTimeo
  • 如何在Flutter gridview中从右向左填充数据

    我试图从右到左填充网格视图数据 因为应用程序是阿拉伯语 并且一切都是 RTL Here is what I want 我正在使用 Stream 生成器来填充数据和以下 Gridview 小部件 Widget productGrid List
  • MySQL - 将两列拆分为两个不同的行

    如果这是一个愚蠢的问题 我不知道要创建这个抱歉 我有一个表 两个团队和总观察 稍后我将在不同的地方使用此信息 所以我的想法是将这两列连接在一列中 但两个不同的行 HomeTeam AwayTeam Totalwatch A B 100 A
  • 反序列化包含字典的对象列表

    我见过很多例子 似乎表明我所做的事情应该有效 但无论出于何种原因 它都不起作用 我正在尝试反序列化对象的集合 其中一个属性是字典 如下所示 class Program static void Main string args var jso
  • min - 子项设置为位置的高度:绝对

    我有一个容器 div 其中一个子 div 设置为相对于其父级的绝对位置 容器 div 有其最小高度设置 但是当子 div 的高度超出父级的高度时 父级不会拉伸 这是由于孩子的绝对定位所致 有什么想法可以让父母随着孩子身高的增加而伸展身体吗
  • 使用命令行工具将 JSON 数组拆分为多个文件

    假设我们有一个长度为 5 的 JSON 数组 我们想使用 Linux 命令行工具将该数组拆分为多个长度为 2 的数组 并将分组的项保存到不同的文件中 我尝试使用jq and split工具 我对任何可以从 bash 脚本执行的方法都很满意