ファイル内の指定された文字列の後に続くテキストを検索する

ファイル内の指定された文字列の後に続くテキストを検索する

ファイルのフィールドの内容を抽出したいと思います。

データは次のとおりです。

{"_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ラベル、先行二重引用符、および末尾二重引用符を削除します。

繰り返しますが、これは汚れたハッキン​​グなので、可能な限り特別なツールを使用して行う必要があります。

関連情報