使用 jq 按长度对数组中的字符串进行排序

Sort strings in array by length using jq

我正在通过 gcloud cli

从 GCP 获取所有 docker 标签的列表
gcloud container images list-tags gcr.io/my_image --format=json | jq -S .[].tags

输出:

[
  "build.160",
  "ed37ba0ea1f31d62ff48ef817addd30c8be9952c"
]
[
  "5cd7190a96f633cfb8b5fa0f876f147dbe700dad",
  "build.161"
]
[
  "9a9f030fcf7544565b9ebf8ba37330b649e156ba",
  "build.159"
]

有没有办法对值进行排序以保持一致性?这样它看起来像这样:

[
  "ed37ba0ea1f31d62ff48ef817addd30c8be9952c",
  "build.160"
]
[
  "5cd7190a96f633cfb8b5fa0f876f147dbe700dad",
  "build.161"
]
[
  "9a9f030fcf7544565b9ebf8ba37330b649e156ba",
  "build.159"
]

您可以对数组中字符串的长度执行 sort_by 并反转顺序以保持最长的字符串在前。移除 reverse 函数以保持最短的字符串在前

sort_by(length) | reverse