【问题标题】:How to have the json output sorted in my case在我的情况下如何对 json 输出进行排序
【发布时间】:2020-03-04 23:53:40
【问题描述】:

这是我在 Ubuntu 上用来从原始 json 文件中提取数据的命令:

    cat results.json | jq -s -c 'sort_by(.name) | .[]'

这些是我得到的输出:

{"name":"I-1","node_id":"458d3d44-9d70-473d-87ae-9cd419277c92","console":5005}
{"name":"I-10","node_id":"c655c49b-083e-46e7-8866-08020761ffac","console":5023}
{"name":"I-11","node_id":"5f62ce93-48ff-420e-9876-e92c01e3d1df","console":5025}
{"name":"I-12","node_id":"af9000dd-0653-4c5d-91ae-def37a95d0fb","console":5027}
{"name":"I-13","node_id":"5ad2301d-688d-4d70-9d35-07b421f4f893","console":5029}
{"name":"I-14","node_id":"2f1fcc75-e642-496a-a822-0d6d0cb46376","console":5031}
{"name":"I-15","node_id":"720c786c-8a38-4c0c-93b7-33850160837c","console":5033}
{"name":"I-16","node_id":"20516282-7cad-43d8-999b-3c20b1e6c3bd","console":5035}
{"name":"I-17","node_id":"e33fa2c1-d36e-4933-ab92-0dad99e2a276","console":5037}
{"name":"I-18","node_id":"4215fe76-1b6b-457d-8a38-85e51b4c53ec","console":5039}
{"name":"I-19","node_id":"351f85c2-7c9c-4847-b15c-43d35d5bdbcd","console":5041}
{"name":"I-2","node_id":"49253898-e628-4ed8-9268-69e6a0b01105","console":5007}
{"name":"I-20","node_id":"0575b79c-4060-4ded-ad69-e5da6bcd4d8b","console":5043}
{"name":"I-21","node_id":"4ba799eb-e48b-49f3-8bb1-65605be85061","console":5045}
...

我怎样才能通过这个 "name" 值以数字方式对输出进行排序?谢谢。 -杰克

【问题讨论】:

  • 您不是只是使用sortby(.name) 进行排序吗 - Json 是字符串,所以这是您在排序字符串时会看到的预期排序
  • 这是按字符串值排序的,而不是数字方式。我正在寻找按 I-1、I-2、I-3 顺序排列的东西...

标签: json sorting jq


【解决方案1】:

only-jq 解决方案:

< results.json jq -s -c '
    sort_by(.name|sub("I-";"") | tonumber) | .[]'

【讨论】:

    【解决方案2】:

    这是一个适合你的方法,但它不是纯粹的 jq。

    cat results.json | jq -s -c '.[]' | sort -k1.12 -n
    

    由于我看到您使用的是 unix,因此使用 sort 命令执行排序:

    sort -k1.12 -n
    

    解释如下:

    -k1.12 Define a restricted sort key that has the starting position field1, in this case position 12
    -n Sort fields numerically by arithmetic value
    

    输出:

    {"name":"I-1","node_id":"458d3d44-9d70-473d-87ae-9cd419277c92","console":5005}
    {"name":"I-2","node_id":"49253898-e628-4ed8-9268-69e6a0b01105","console":5007}
    {"name":"I-10","node_id":"c655c49b-083e-46e7-8866-08020761ffac","console":5023}
    {"name":"I-11","node_id":"5f62ce93-48ff-420e-9876-e92c01e3d1df","console":5025}
    {"name":"I-12","node_id":"af9000dd-0653-4c5d-91ae-def37a95d0fb","console":5027}
    {"name":"I-13","node_id":"5ad2301d-688d-4d70-9d35-07b421f4f893","console":5029}
    {"name":"I-14","node_id":"2f1fcc75-e642-496a-a822-0d6d0cb46376","console":5031}
    {"name":"I-15","node_id":"720c786c-8a38-4c0c-93b7-33850160837c","console":5033}
    {"name":"I-16","node_id":"20516282-7cad-43d8-999b-3c20b1e6c3bd","console":5035}
    {"name":"I-17","node_id":"e33fa2c1-d36e-4933-ab92-0dad99e2a276","console":5037}
    {"name":"I-18","node_id":"4215fe76-1b6b-457d-8a38-85e51b4c53ec","console":5039}
    {"name":"I-19","node_id":"351f85c2-7c9c-4847-b15c-43d35d5bdbcd","console":5041}
    {"name":"I-20","node_id":"0575b79c-4060-4ded-ad69-e5da6bcd4d8b","console":5043}
    {"name":"I-21","node_id":"4ba799eb-e48b-49f3-8bb1-65605be85061","console":5045}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-26
      • 1970-01-01
      • 2020-01-25
      • 2011-11-06
      • 2012-11-20
      • 2018-07-16
      • 2011-04-12
      • 1970-01-01
      相关资源
      最近更新 更多