2
如何製作在其stdin中查找IPv6地址的shell命令?如何在命令行管道中匹配IPv6地址
一種選擇是使用:
grep -Po '(?<![[:alnum:]]|[[:alnum:]]:)(?:(?:[a-f0-9]{1,4}:){7}[a-f0-9]{1,4}|(?:[a-f0-9]{1,4}:){1,6}:(?:[a-f0-9]{1,4}:){0,5}[a-f0-9]{1,4})(?![[:alnum:]]:?)'
這RE是基於「Regular expression that matches valid IPv6 addresses」的想法,但這種說法並不準確。我可以使用更加醜陋的正則表達式,但有沒有更好的方法,我不知道的一些命令?
你真的需要查找aheads和查找屁股? – Anthony
看起來語法基本上是這樣的:「8組16位數字,使用冒號(:)使用十六進制數字分隔,或使用數字小數點時使用點(。),併發組的值爲0摺疊成一個雙冒號(::)「。我說基本上就是這麼簡單,但顯然它變得非常快。但我注意到的唯一真正的困難是十六進制和十進制的合法混合。 – Anthony
向前/向後是防止匹配8個以上的組,這顯然不是一個良好的ip6地址。我認爲你的總結是正確的。十六進制組最多可以有四個字符。此答案未找到使用小數表示法的地址。 – JanKanis