mike-neckのブログ

Java or Groovy or Swift or Golang

2つの配列をマージしてオブジェクトの配列を作る(How to merge/zip two arrays into an array in jq)

一瞬わからなくて、グーグルなどで検索したけどよくわからなかったものの、ドキュメントを読み直したら解けた。

これは、パイプラインを理解してないと思いつかないと思う。


次のようなオブジェクトがあり、 namesscores は同じ長さの配列かつ names は重複のない配列として、それらをマージして (name, score) を組みにしたオブジェクトを作るのが目標とする。

item:
  names:
  - foo
  - bar
  - baz
  scores:
  - 10
  - 20
  - 30

namesscores に名前を付けて参照可能にしておいて、 names をメインのイテレーターとしてインデックスを自身から取得して、そのインデックスで scores から score を取得する

.item.names as $names |
.item.scores as $scores |
[
  .item.names[] |
  . as $name |
  {
    name: .,
    score: $scores[
      $names | index($name)
    ]
  }
]

MacOS の sips コマンドで HEIF 形式(拡張子 .HEIC)から別の画像の形式(png / jpeg ...)に変換する

MacOS How to convert a heic image file into a png/jpeg file.

MacOS にデフォルトでインストールされている sips コマンドを使うと、 ヒーフ(HEIF / 拡張子 .HEIC) 形式の画像ファイルを別の画像の形式 (png / jpeg / jpeg2000 ...) に変換できる。

() {
readonly toFormat="jpeg"
readonly original="${1}"
readonly converted="${1%.*}.${toFormat}"

sips \
  --setProperty format "${toFormat}" \
  "${original}" \
  --out "${converted}"

} "[変換したいファイル].HEIC"
続きを読む