grep お問い合わせ if/else

grep お問い合わせ if/else

すべてのインスタンスを見つけ、"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ドキュメントから取得できます。targetjq

$ jq -r '.payload.target.login' file1.json
username3

同様にlogin、以下を持つことができます。actor

$ jq -r '.actor.login' file1.json
username4

条件付き出力が必要な場合(そうでない場合はtype何も生成しません):typeFollowEvent

jq -r 'select(.type == "FollowEvent") | .actor.login' file1.json

おすすめ記事