如何将字符串中的所有 IP 地址放入 bash 数组

How to get all of the IP addresses in a string into a bash array

我有以下字符串:

redis. 600 IN A 172.16.0.3 redis. 600 IN A 172.16.0.4 redis. 600 IN A 172.16.0.5 redis. 600 IN A 172.16.0.6 redis. 600 IN A 172.16.0.7

字符串是通过以下命令获取的:

dig redis A | grep redis | grep -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'

当命令为 运行 时,字符串会在每一行打印出来,但我将输出保存到一个变量中,所以它都是一行。我想将所有 IP 地址放入 bash 数组中。我执行此操作的最佳方法是什么?

编辑: 这个 post 不是重复的,因为它的重点是如何获取 IP 地址,而不是如何将它们读入数组。

我最终能够通过使用 awk 来做到这一点:

IPAddresses=($(dig redis A | grep redis | grep -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | awk '{print }'))

IPAddresses数组里面有所有的IP地址,可以通过执行echo "${IPAddresses[@]}"

打印出来