2017-03-21 9 views
0

私は、コマンドを使用する場合:bash jqがjsonを解析するとき、複数行の配列を返しますが、この結果をどのように使用できますか?

ids=`cat $myfilename | jq -r "[.data[].id]"` 

と、次のように返します。

[ 
    "PC_PACX_0017", 
    "GS_ZGRS_0001", 
    "PC_PACX_0018", 
    "GS_ZGRS_0002", 
    "AB_HXJK_0002", 
    "AB_HXJK_0001", 
    "TK_TKZX_0011", 
    "TL_TBAL_0002", 
    "TL_TBAL_0001", 
    "TS_TKRS_0001", 
    "TS_TKRS_0002", 
    "TS_TKRS_0003" 
] 

が、アレイとして見ることはできませんが、私はこの結果を使用することができます1.How、それの長さは唯一のこと?

答えて

0

配列は複数行の文字列とは異なります。 、あなたのデータには改行がないと仮定すると、

jq -r '[.data[].id]|.[]' # Could be simplified to '.data[].id' 

にごjqコールを変更し、適切な配列を移入するreadArraybash 4以降)を使用します。

readArray -t ids < <(jq -r '[.data[].id]|.[]' "$myfilename") 
+0

ありがとうございます。「<<」の意味ですか? – xexiyong

+0

通常の入力リダイレクトです。しかし、 '<(...)'はプロセス置換と呼ばれる構文で、コマンドの出力をファイルとして表示します。 – chepner

+0

堅牢性と一般性を高めるには、-cコマンドラインオプションを使用します。 – peak

関連する問題