実現したいこと
jq を使ってキャスト、文字列結合したい。
前提
jqの使い方を学ぼうとしています。下記サイトを見つけ手始めでやっているのですがエラーで進めないため原因と、対策を見つけたいです。
環境はWindows10、
jq-1.7-dirty
PowerShell 5.1.19041.3031
使用しているJSON
JSON
1{ 2 "total_count": 3, 3 "items": [ 4 { 5 "id": 111, 6 "name": "aaa", 7 "owner": { 8 "id": 1111111, 9 "type": "Organization" 10 }, 11 "size": 10 12 }, 13 { 14 "id": 222, 15 "name": "bbb", 16 "owner": { 17 "id": 2222222, 18 "type": "User" 19 }, 20 "size": 30 21 }, 22 { 23 "id": 333, 24 "name": "ccc", 25 "owner": { 26 "id": 3333333, 27 "type": "Organization" 28 }, 29 "size": 25 30 } 31 ] 32}
発生している問題・エラーメッセージ
cat demo.json | jq -r '.items[] | .result = (.id|tostring) + " " + .name' jq: error: syntax error, unexpected end of file (Windows cmd shell quoting issues?) at <top-level>, line 1: .items[] | .result = (.id|tostring) + jq: 1 compile error
期待する結果(出力例)
JSON
1{ 2 "id": 111, 3 "name": "aaa", 4 "owner": { 5 "id": 1111111, 6 "type": "Organization" 7 }, 8 "size": 10, 9 "result": "111 aaa" 10} 11{ 12 "id": 222, 13 "name": "bbb", 14 "owner": { 15 "id": 2222222, 16 "type": "User" 17 }, 18 "size": 30, 19 "result": "222 bbb" 20} 21{ 22 "id": 333, 23 "name": "ccc", 24 "owner": { 25 "id": 3333333, 26 "type": "Organization" 27 }, 28 "size": 25, 29 "result": "333 ccc" 30}
試したこと
下記参考URLに書かれているもので他のコードは期待どおりの結果になっています。
シンタックスエラーなので(.id|tostring) の記述が間違っていると思っていますが、
https://jqplay.org/
でFilter .items[] | .result = (.id|tostring) + " " + .name で実施すると
期待どおりに返ってきます。
Powershell特有の問題な気がしていますが対処策がわからず、教えて頂けないでしょうか。
補足情報(FW/ツールのバージョンなど)
jqコマンド(jsonデータの加工, 整形)の使い方 - わくわくBank
https://www.wakuwakubank.com/posts/676-linux-jq/#index_id8

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/09/08 11:38
2023/09/09 02:30
2023/09/09 11:34