elasticsearch,jq,Json,Shell,elasticsearch,Jq" /> elasticsearch,jq,Json,Shell,elasticsearch,Jq" />

如何在shell中的漂亮JSON文件上进行不恰当的打印>&燃气轮机;串行字符串JSON>&燃气轮机;是散装的吗?

如何在shell中的漂亮JSON文件上进行不恰当的打印>&燃气轮机;串行字符串JSON>&燃气轮机;是散装的吗?,json,shell,elasticsearch,jq,Json,Shell,elasticsearch,Jq,在AWSEC2上使用Elasticsearch时,我遇到了批量索引的问题。ES_批量端点要求文件基本上是JSON串行字符串,每个字符串上都有\n终止符;我使用各种web API和文件预处理构建的东西非常JSON,也就是说,很容易让人阅读 是否有一种简单的shell脚本方法,可以将所有漂亮的JSON简单地连接成字符串,而无需加载一些Java库或其他什么?如果这有助于解析,我可以在预处理期间将标记添加到基本文件中,以标记所需的\n中断,但如果有人对该工具集有所了解,我将不胜感激。我感觉那里有脚本,我

在AWSEC2上使用Elasticsearch时,我遇到了批量索引的问题。ES_批量端点要求文件基本上是JSON串行字符串,每个字符串上都有\n终止符;我使用各种web API和文件预处理构建的东西非常JSON,也就是说,很容易让人阅读


是否有一种简单的shell脚本方法,可以将所有漂亮的JSON简单地连接成字符串,而无需加载一些Java库或其他什么?如果这有助于解析,我可以在预处理期间将标记添加到基本文件中,以标记所需的\n中断,但如果有人对该工具集有所了解,我将不胜感激。我感觉那里有脚本,我知道有一些库,但到目前为止,我还没有找到任何简单的命令行工具来进行不必要的打印。

您可以尝试使用regexp查找/替换:

  • 查找以下内容:“^\s{2,}”替换为“”
  • 查找要替换的内容“\n”

  • 看到这一点:

    D_S_Toowite的回答不是一个直接的答案,但它让我以正确的方式思考,即问题是删除所有空白。我发现了一种使用命令行工具tr删除所有空白的非常简单的方法:

    tr -d [:space:] inputfile
    
    :space:tag删除了所有空白、制表符、空格、垂直制表符等。因此,一个漂亮的JSON输入如下:-

    {
        "version" : "4.0",
        "success" : true,
        "result" :
        {
                "Focus" : 0.000590008,
                "Arc" : 12
        }
    }
    
    成为此JSON序列字符串:

    {"version":"4.0","success":true,"result":{"Focus":0.000590008,"Arc":12}}
    
    我仍然需要解决\n终止符,但我认为这现在很简单,至少在我的特例中是这样,只需在使用sed关闭括号对后追加即可

    非常感谢你的建议

    干杯

    Sid

    您可以尝试在shell中解析JSON的伟大工具。要使用jq取消打印,可以使用以下任一方法:

    cat pretty-printed.json | jq -c .
    jq -c . pretty-printed.json
    
    -c(或--compact输出)告诉它不要打印(这是默认值)。“.”命令它按原样返回JSON内容,而不是重新格式化。它会被转储回stdout,所以您可以重定向输出或通过管道将其传输到其他地方

    另外,我想解决同样的问题,于是选择了这个选项。

    在npm的帮助下很容易在命令行中启动和运行,打印“无绒毛”JSON的一个简单方法是给它一个缩进字符“”

    作为命令行用户的奖励,我一直使用它来获取粘贴缓冲区(在Mac上)并将其转换为其他内容,例如:

    将缓冲区内容交换为JSON linted“compressed”格式:

    pbpaste | jsonlint -t "" | pbcopy
    
    将缓冲区内容交换为打印精美的JSON linted格式:

    pbpaste | jsonlint | pbcopy
    
    您还可以将文件内容通过管道传输到文件的丑陋(JSON linted)版本:

    cat data-pretty.json | jsonlint -t "" > data-ugly.json
    

    而要重定向到另一个文件…?这种方法的问题是,如果数据包含任何重要的空白(即,其中一个值是包含句子的字符串),它将被错误地剥离。
    cat data-pretty.json | jsonlint -t "" > data-ugly.json