0

我有一个具有以下格式的 ndjson 文件

{"field1": "data1" , "field2": "data2"}
{"field1": "data1" , "field2": "data2"}
....

我想添加一个标题

{"index": {}}

在使用批量操作之前的每个文档之前我发现了一个类似的问题:Elasticsearch Bulk JSON Data

解决方案是这个 jq 命令:

jq -cr ".[]" input.json | while read line; do echo '{"index":{}}'; echo $line; done > bulk.json

但我得到这个错误:

'while' is not recognized as a internal or external command

我究竟做错了什么?我正在运行 Windows 或者有更好的解决方案吗?谢谢

4

1 回答 1

1

您的while示例中的结构通常内置于开发人员友好的外壳中,例如 sh、bash 或 zsh,但 windows 不提供开箱即用的功能。例如,请参阅 bash 文档

因此,如果这是一次性的事情,最快的解决方案可能是使用一些文本编辑器并通过使用一些多光标功能添加所需的操作行。

另一方面,如果您仅限于 Windows,但想要某种更好的 shell 来更频繁地使用它,您应该查看cmder 项目,该项目在使用完整版本时为您的 Windows 桌面带来 bash 环境与 git-for-windows 打包在一起。这应该允许您在非 linux 或 mac 环境中使用此类脚本功能。

于 2017-08-28T20:41:11.140 回答