ファイルのフィールドの内容を抽出したいと思います。
データは次のとおりです。
{"_index":"bk","_type":"account","_id":"1","_score":1,"_source":{"a_n":1,"firstname":"Blake","lastname":"Hess","age":30,"gender":"M","address":"anything Avenue","employer":"anything","email":"[email protected]","city":"anything","state":"anything"}}
希望の出力
Blake
答え1
jq
データ解析の場合json
:
jq -r '._source.firstname'
質問の入力データとして必要な出力を表示します。
答え2
原則として言及されている専用JSONパーサーは正しいアプローチです。何らかの理由でこれがうまくいかないと、そして実際には、この特定のフィールド値にのみ興味があります。次は簡単ですが汚い(!!)フィールド値を抽出するハッキング:
awk '{split($1,fld,"\"firstname\":\"[[:alnum:]]*\"",sep); print(sep[1])}' <filename> | sed -e "s/\"firstname\":\"//" -e "s/\"$//"
これはデフォルトでパターンを"firstname":"<some string>"
フィールド区切り文字として使用して印刷します。実際"firstname":"Blake"
フィールド区切り記号(あなたの場合)の値とそれをパイプして、フィールドsed
ラベル、先行二重引用符、および末尾二重引用符を削除します。
繰り返しますが、これは汚れたハッキングなので、可能な限り特別なツールを使用して行う必要があります。