質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

Q&A

1回答

1282閲覧

シェルで複数jsonの平坦化をしたい

kozica

総合スコア58

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

0グッド

1クリップ

投稿2020/02/03 01:59

編集2020/02/03 02:05

シェルスクリプトを作成している途中で取得したデータの整形に悩んでおります。

以下のデータを取得しています。

json

1# notificationId.json 2{ 3 "Count": 4456, 4 "Items": [ 5 { 6 "status": { 7 "S": "Finish" 8 }, 9 "prospective": { 10 "N": "20" 11 }, 12 "success": { 13 "N": "10" 14 }, 15 "unknown": { 16 "N": "0" 17 }, 18 "updatedAt": { 19 "N": "1531470204917" 20 }, 21 "pushNotified": { 22 "N": "13" 23 }, 24 "failure": { 25 "N": "3" 26 }, 27 "appId": { 28 "S": "apple-drink" 29 }, 30 "notificationId": { 31 "S": "aaabbbccc" 32 }, 33 "type": { 34 "S": "All" 35 }, 36 "createdAt": { 37 "N": "1531470204874" 38 } 39 }, 40 { 41 "status": { 42 "S": "InProgress" 43 }, 44 "prospective": { 45 "N": "1" 46 }, 47 "success": { 48 "N": "0" 49 }, 50 "unknown": { 51 "N": "0" 52 }, 53 "updatedAt": { 54 "N": "1439542730998" 55 }, 56 "pushNotified": { 57 "N": "0" 58 }, 59 "failure": { 60 "N": "0" 61 }, 62 "totalSegments": { 63 "N": "1" 64 }, 65 "appId": { 66 "S": "orange-drink" 67 }, 68 "notificationId": { 69 "S": "dddeeefff" 70 }, 71 "type": { 72 "S": "Personal" 73 }, 74 "createdAt": { 75 "N": "1439542730998" 76 } 77 }, 78 . 79 . 80 ], 81 "NextToken": "None___5", 82 "ScannedCount": 4456, 83 "ConsumedCapacity": null 84}

上記データを以下のように"notificationId"のみに整形したいです。

json

1{ 2 "notificationId": {"S": "aaabbbccc"}, 3 "notificationId": {"S": "dddeeefff"}, 4 . 5 . 6 . 7}

○やってみたこと
以下のようにして見たのですが複数のjsonの形になってしまいます。
簡単のようでかなり時間取られ結果わからずじまいだったので質問させて頂きました。

shell

1$ cat notification.json | jq '.Items[] | { notificationId: .notificationId}' 2{ 3 "notificationId": {"S": "aaabbbccc"} 4} 5{ 6 "notificationId": {"S": "dddeeefff"} 7} 8{ 9 . 10} 11{ 12 . 13}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

以下のようにすれば一応期待通りの整形はできました。
ただ、、、全然綺麗ではないorz
"}}{"という文字列を"},"に変換という気持ち悪いやり方でしています。
もっとスマートに取得したいので解答お待ちしております

$ cat notification.json | jq '.Items[] | {notificationId: .notificationId}' | sed ':lbl1;N;s/}\n}\n{/},/;b lbl1;' { "notificationId": { "S": "aaabbbccc" }, "notificationId": { "S": "dddeeefff" }, . . . } }

投稿2020/02/03 02:24

kozica

総合スコア58

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問