linux中匹配正確的ip位址

2022-08-20 22:15:11 字數 937 閱讀 4043

sed -n  "

/[0-9]\.[0-9]\\.[0-9]\\.[0-9]\/p

" test

這種匹配存在明顯的問題,在正則匹配的過程中,若是出現300,1,255,0;192.168.0.  ;192.168,1.1.1這種錯誤的ip位址,任然會被匹配到

在這裡,逛論壇的時候看見一位老哥踩了乙個坑,這裡做 一下記錄

sed -n -r   "

/((([0-9])|(1[0-9])|(2[0-4][0-9])|(25[0-5]))\.)(([0-9])|(1[0-9])|(2[0-4][0-9])|(25[0-5]))/p

" test

這個正則在匹配前24位 的時候是沒有問題的,然而,在匹配最後8位的時候,會存在乙個讓人很無奈的問題。當你匹配192.168.1.300的時候,是可以匹配到的。為什麼呢?我的正則裡面可是完全沒有大於 255的情況的啊。

原因如下:

在進行前24位匹配的時候使用的是 : 

(([0-9])|(1[0-9])|(2[0-4][0-9])|(25[0-5]))\.

若是數字之後沒有點號,那麼是不會匹配成功的,但是,在匹配最後8位的時候,使用的是

(([0-9])|(1[0-9])|(2[0-4][0-9])|(25[0-5]))

當它匹配到30的時候,正則匹配就結束了,這就是為什麼會匹配到300的原因 

為了解決匹配到大於255的問題,可以在上乙個sed的結果之後,利用awk對ip的最後8位進行過濾

sed -n -r   "

/((([0-9])|(1[0-9])|(2[0-4][0-9])|(25[0-5]))\.)/p

" test_1 | awk -f "."

''

正確的IP位址

簡介 ip位址 英語 internet protocol address 是一種在internet上的給主機編址的方式,也稱為網際協議位址。ip位址是ip協議提供的一種統一的位址格式,它為網際網路上的每乙個網路和每一台主機分配乙個邏輯位址,以此來遮蔽實體地址的差異。常見的ip位址,分為ipv4與ip...

匹配IP位址

正規表示式 25 0 5 2 0 4 0 9 0 1 0 9 1 9 0 9 1 9 25 0 5 2 0 4 0 9 0 1 0 9 1 9 0 9 1 9 0 25 0 5 2 0 4 0 9 0 1 0 9 1 9 0 9 1 9 0 25 0 5 2 0 4 0 9 0 1 0 9 1 9 ...

IP位址匹配

問題描述 在路由器中,一般來說 模組採用最大字首匹配原則進行目的埠查詢,具體如下 ip位址和子網位址所帶掩碼做and運算後,得到的值與子網位址相同,則該ip位址與該子網匹配。比如 192.168.1.100 255.255.255.0 192.168.1.0,則該ip和子網192.168.1.0匹配...