我有一个ndjson文件,格式如下
{"field1": "data1" , "field2": "data2"}
{"field1": "data1" , "field2": "data2"}
....
我想添加一个类似的标题
{"index": {}}
在使用批量操作之前的每个文档之前我发现了一个类似的问题:Elasticsearch批量JSON数据
解决方案是这个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或者有更好的解决方案吗?感谢
您的示例中的while
是一个通常内置于开发人员友好的shell(如sh、bash或zsh(中的构造,但windows不提供开箱即用的功能。例如,请参阅bash文档。
因此,如果这是一次性的,那么最快的解决方案可能是使用一些文本编辑器,并通过使用一些多光标功能添加所需的操作行。
另一方面,如果您仅限于Windows,但希望某种更好的shell更频繁地使用它,那么在使用git for Windows打包的完整版本时,您应该看看cmder项目,该项目会为您的Windows桌面带来bash环境。这应该允许您在非linux或mac环境中使用此类脚本功能。