プログラマーな日々

Developer and Cloud Architect. I Don't belong to any company now. AWS Certified SAA/SOA/DVA BigData ETL (Redshift, Data Pipeline, Lambda)/C#/bash/PowerShell

【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'
"テスト"

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