2011-12-19 36 views
0

爲了準備多個服務器的重新IP,我打算在設置文件中搜索服務器上的所有IP地址。在服務器上的設置文件中查找硬編碼的IP地址

頭腦簡單的第一次嘗試:

grep -e "[0-9]*\\.[0-9]*\\.[0-9]" 

..produces誤報,因爲沒有數字的字符串也被允許。此外,它會發現版本號如1.2.3.4.5這些不是有效的IP地址。

我敢肯定,有人已經想到了這一點,並提出了尋找正則表達式grep,涵蓋所有例外的完美IP地址。

+1

檢查這裏:http://stackoverflow.com/questions/106179/regular-expression-to-match-hostname-or-ip-address – ennuikiller 2011-12-19 02:53:26

+0

謝謝!這是正確答案的好提示,但提供的正則表達式不起作用。 – 2011-12-19 04:14:15

+0

即egrep'([[:digit:]] {1,3} \。){3} [[:digit:]] {1,3}'也可以找到5位序列號... – 2011-12-19 04:45:32

回答

2

如何:

(^|[^\.0-9])([0-2]?[0-9]{,2}\.){3}[0-2]?[0-9]{,2}($|[^\.0-9]) 

-e 「擴展」 的grep運行。它將不匹配任何數量超過四個重複組,或者大於299(最好排除大於255)。

顯然,這僅適用於IPv4 ......不會忽略

編輯:

大廈this question的回答,這裏有一個版本是隻匹配有效的IPv4地址(我修改它,所以它贏得了「T匹配數字超過四組):

(^|[^\.0-9])(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])($|[^\.0-9]) 
相關問題