Сохранить строку после второго появления другой строки - PullRequest
0 голосов
/ 08 июня 2019

У меня есть файл, содержащий строки, которые выглядят так:

username1
username2
./2011-05-25-0.json.gz:{"repo":{"url":"https://api.github.dev/repos//","name":"/"},"type":"FollowEvent","public":true,"created_at":"2011-05-25","payload":{"target":{"gravatar_id":"5e17","id":144929,"repos":12,"followers":1,"login":"username3"}},"actor":{"gravatar_id":"dec","id":21,"url":"https://api.github.dev/users/user","avatar_url":"https://secure.gravatar.com/avatar/decc?d=http://github.dev%2Fimages%2Fgravatars%2Fgravatar-user-420.png","login":"username4"},"id":"14"} 
./2011-05-25-0.json.gz:{"repo":{"url":"https://api.github.dev/repos//","name":"/"},"type":"FollowEvent","public":true,"created_at":"2011-05-25","payload":{"target":{"gravatar_id":"f9ed","id":82,"repos":5,"followers":4,"login":"username5"}},"actor":{"gravatar_id":"decc93","id":21,"url":"https://api.github.dev/users/username","avatar_url":"https://secure.gravatar.com/avatar/de?d=http://github.dev.user-420.png","login":"username6"},"id":"147"} 

Я хотел бы получить файл, который содержит:

username1
username2
username4
username6

То есть, если строка "login": происходит в строке, затем получите строку, содержащуюся в ", сразу после второго вхождения "login".В противном случае, оставьте линию нетронутой.

Как я могу сделать это с grep или sed?

1 Ответ

1 голос
/ 08 июня 2019

Вы можете попробовать:

sed 's/.*{.*login":"\([^"]*\)".*/\1/g' text.txt

или

sed -i.bkup 's/.*{.*login":"\([^"]*\)"}.*/\1/g' text.txt

Для перезаписи файла с новыми именами пользователей и bkup старого к text.txt.bkup

ПРИМЕЧАНИЕ. Предполагается, что имя пользователя не содержит шаблон, описанный регулярным выражением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...