在分隔符后分割文本并存储到数组中

时间:2018-06-19 09:15:47

标签: arrays bash text split delimiter

我想在分隔符'name'之后的文本中获取DNS区域:“'并且之后存储到数组中:

[{"id":12,"**name":"43.11.in-addr.arpa**","ttl":1000,"nameserver":"mo.t1.ree.kalou.com.","email":"dns.kalou.com","serial":348,"refresh_time":1000,"negative_ttl":10800},{"id":13,"name":"**58.78.in-addr.arpa**","ttl":100 etc etc

数组的输出:

43.11.in-addr.arpa
58.78.in-addr.arpa

我只是发现在单个分隔符之后拆分而不是单词。

由于

1 个答案:

答案 0 :(得分:2)

如果您的输入看起来像

your_json_string='[
  {
    "id": 12,
    "name": "43.11.in-addr.arpa",
    "ttl": 1000,
    "nameserver": "mo.t1.ree.kalou.com.",
    "email": "dns.kalou.com",
    "serial": 348,
    "refresh_time": 1000,
    "negative_ttl": 10800
  },
  {
    "id": 13,
    "name": "58.78.in-addr.arpa",
    "ttl": 100
  }
]'

要提取name字段,您可以使用jq

jq -r '.[].name' <<< "$your_json_string"

要将值分配给数组,请使用:

my_array=($(jq -r '.[].name' <<< "$your_json_string"))

并且可能使用类似

的东西
echo ${my_array[0]}