感谢您提供的示例,我已经发现问题所在。因为IPv6地址中含有冒号(:),它与用于分割数据字段的冒号产生了混淆。这里是更新后的命令,可以正确过滤出 IPv4 和 IPv6 地址:
cat heelo.text | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}|([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}'
这个命令使用 grep
命令和正则表达式从文件 heelo.text
中读取文本,并过滤出所有符合 IPv4 或 IPv6 地址格式的字符串。
请注意,在此命令中,我们使用了两个正则表达式,分别匹配 IPv4 和 IPv6 地址。对于 IPv4 地址,我们使用 \.
来转义点号,以便将其视为普通字符而不是正则表达式元字符。对于IPv6地址,我们通过 [0-9a-fA-F]
匹配十六进制数字和字母,并使用 :
分隔每个块。