相同的键,不同的值:字典的嵌套字典

时间:2019-06-01 01:48:30

标签: grep

借用this question的MWE,我有一组嵌套的字典。

{
  "type": "A"
    "a": "aaa",
    "payload": {"another":{"dict":"value", "login":"user1"}},
    "actor": {"dict":"value", "login":"user2"}
}
{
  "type": "B"
    "a": "aaa",
    "payload": {"another":{"dict":"value", "login":"user3"}},
    "actor": {"dict":"value", "login":"user4"}
  }
}
{
  "type": "A"
    "a": "aaa",
    "b": "bbb",
    "payload": {"another":{"dict":"value", "login":"user5"}},
    "actor": {"dict":"value", "login":"user6"}
  }
}
{
  "type": "A"
    "a": "aaa",
    "b": "bbb",
    "payload": {"login":"user5"},
    "actor": {"login":"user6"}
  }
}

对于具有"type":"A"的词典,我想从payload字典中获取用户名,并从actor字典中获取用户名。同一用户名可以出现多次。我想存储一个txt文件,其中包含actor(ID1)列表和payload(ID2)列表,如下所示:

ID1    ID2
user2  user1
user6  user5
user6  user5

现在,我有一个起点:

zgrep "A" | zgrep -o 'login":"[^"]*"' | zgrep -o 'payload":"[^"]*" > usernames_list.txt

但是这当然是行不通的,因为我需要在有效载荷字典中找到登录名,并在Actor字典中找到类型A的每个字典的登录名。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我假设您对payload A的所有条目都有actortype字典。

  1. payload项中解析出用户名并重定向 到名为payload.txt的文件
  2. actor个条目中解析出用户名,并将其重定向到 另一个名为actor.txt的文件
  3. 使用paste命令加入条目并以所需方式输出它们