
すべてのインスタンスを見つけ、"type":"FollowEvent"
そのインスタンス内で文字列が"actor":
続かない場合は、{
それに続く文字列をキャプチャしようとします。それ以外の場合は、に含まれる直後の文字列をキャプチャします。"
"actor":
"
"login:"
私が今まで持っているもの:
zgrep -e '"type":"FollowEvent"' /path/to/dir/* | zgrep -o '"actor":(?!{)*' | cut -f2- -d: | cut -d',' -f1 > results_file.txt
編集:zgrep
これがすること:
/path/to/dir にあるすべてのファイルの を含むすべての行に対して"type":"FollowEvent"
find の"actor:"
後に{
。その後、次回以降の:
すべてのものを取り出します,
。結果をに入れますresults_file.txt
。
表示データの編集:
grep 中のファイルの行は次のとおりです。
{"repo":{"url":"https://url","name":"/"},"type":"FollowEvent","public":true,"created_at":"2011-05-29","payload":{"target":{"gravatar_id":"73","id":64,"repos":35,"followers":58,"login":"username3"}},"actor":{"gravatar_id":"06","id":439,"url":"https://url","avatar_url":"https://.png","login":"username4"},"id":"14"}
または次のようになります。
{"repo":{"url":"https://url/","name":"/"},"type":"FollowEvent","public":true,"created_at":"2011-04-01","payload":{"target":{"gravatar_id":"40","repos":2,"followers":1,"login":"username2"},"actor":"username1","actor_gravatar":"de4"},"actor":{"gravatar_id":"de4","id":716,"url":"https://url","avatar_url":"https://.png","login":"username2"},"id":"12"}
答え1
login
以下のユーザー名は、次のコマンドを使用して2つのJSONドキュメントから取得できます。target
jq
$ jq -r '.payload.target.login' file1.json
username3
同様にlogin
、以下を持つことができます。actor
$ jq -r '.actor.login' file1.json
username4
条件付き出力が必要な場合(そうでない場合はtype
何も生成しません):type
FollowEvent
jq -r 'select(.type == "FollowEvent") | .actor.login' file1.json