プログラマーな日々

プログラマーをやっています。好きなものは、C#, TaskChute Cloud, WorkFlowy, Backlog, AWSです。

【Powershell】jqでselectできない

以下のjqコマンドはbashでは期待通りに動作します。

$ echo '{"items":[{"id":1,"name":"foo"},{"id":2,"name":"テスト"}]}' | jq '.items[] | select(.name == "テスト") | .name'
"テスト"

Powershellでは、期待に反して、何も出力されません。

$ echo '{"items":[{"id":1,"name":"foo"},{"id":2,"name":"テスト"}]}' | jq '.items[] | select(.name == \"テスト\") | .name'

対応策

$OutputEncoding = [System.Text.Encoding]::UTF8をjqの前に実行し、外部コマンドへの出力文字コードを変更します。

$ $OutputEncoding = [System.Text.Encoding]::UTF8
$ echo '{"items":[{"id":1,"name":"foo"},{"id":2,"name":"テスト"}]}' | jq '.items[] | select(.name == \"テスト\") | .name'
"テスト"

牟田口さんに教えていただきました。感謝。