さまざまなJSON文字列の値を解析します(jqを除く)。

さまざまなJSON文字列の値を解析します(jqを除く)。

私はJSON出力を読み取り、さまざまなJSON変数または文字列の値を解析する必要があるbashスクリプトを作業しています。サンプル出力です。Content他の変数の横または別の変数から値を読み取る必要があります。例えば、

を見つけてContent印刷できますValue1

検索してDeviceType印刷できます。Value4

サンプル出力: {"Content":"Value1","CreationMethod":"Value2","database":"Value3","DeviceType":"Value4"}

sedとawkの組み合わせを試しましたが、出力sed 's/["]/ /g' | awk '{print $4}'が同じ位置にある場合にのみ可能でした。それ以外の場合、値が範囲外の位置の変更により、Content他のJSON出力で誤った値が選択されます。Contentawk '{print $4}'

ベストアンサー1

まあ、私が正しく理解したら、GNUを使って次のようにgrepしますtr

tr ',' '\n' < foo | grep -Po "(?<=Content\":\").*(?=\")"

出力:

Value1

他のキーワードを使う:

tr ',' '\n' < foo | grep -Po "(?<=database\":\").*(?=\")"

Value 3

新しい行でカンマを置き換えます。

tr ',' '\n'

Grepは正規表現と同様にPerl-o専用です。-P

grep -Po

パターンのキャプチャ("<keyword>:"")<value>(")と印刷ただ <value>

おすすめ記事