【问题标题】:Keep the string after the second occurrence of another string在第二次出现另一个字符串后保留该字符串
【发布时间】:2019-10-23 09:43:58
【问题描述】:

我有一个文件,其中包含如下所示的行:

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"第二次出现后立即获取"中包含的字符串。否则,保持线不变。

如何使用grepsed 执行此操作?

【问题讨论】:

标签: bash


【解决方案1】:

你可以试试:

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

或者

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

用新用户名覆盖文件并将旧用户名bkup到text.txt.bkup

注意:这假设用户名不包含正则表达式描述的模式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 2015-06-13
    • 2017-12-25
    • 2019-07-02
    • 2018-02-05
    相关资源
    最近更新 更多