我有一個文本文件,其中包含一個很長的IP地址列表排序。該文件的示例如下:外殼腳本來檢查和插入IP地址
103.21.244.0/22 1; #Cloudflare
103.22.200.0/22 1; #Cloudflare
103.31.4.0/22 1; #Cloudflare
104.16.0.0/12 1; #Cloudflare
108.162.192.0/18 1; #Cloudflare
141.101.64.0/18 1; #Cloudflare
162.158.0.0/15 1; #Cloudflare
173.245.48.0/20 1; #Cloudflare
188.114.96.0/20 1; #Cloudflare
190.93.240.0/20 1; #Cloudflare
197.234.240.0/22 1; #Cloudflare
198.41.128.0/17 1; #Cloudflare
199.27.128.0/21 1; #Cloudflare
我想寫一個shell腳本,執行以下操作:
對於給定的IP地址(例如
1.2.3.4
)或IP範圍(例如1.2.3.0/24
),找出它是否已經在文件中。如果是,則什麼也不做。如果不是,則將其插入到正確位置的文件中。
問題:
A.我被困在一個檢查IP地址或IP範圍是否已在該文件中,因爲一個簡單的grep不會做。例如,對於IP 188.114.98.200
,grep將返回負數,實際上已經由188.114.96.0/20
表示。同樣適用於188.114.98.0/24
。
B.我也無法知道如何在正確的位置插入IP地址/範圍條目而不會擾亂排序順序。
有人可以幫忙嗎?非常感謝你。
編輯:
好了,特別是如果有在其他語言中已經存在的庫,可以把工作做好,望着建議後,我想我也不必無謂地限制自己猛砸,容易。
至於插入到正確的地方,我只想追加到尾部,然後再打文件。不太確定匹配'..98.200'和'.96.0/20'。祝你好運。 – shellter 2014-09-29 03:29:42
請解釋您確定「188.114.98.200」等於「188.114.96.0/20」或「188.114.98」的邏輯。0/24'。 – 2014-09-29 05:26:43
@AbhishekPathak大概通過某種網絡掩碼邏輯:http://en.m.wikipedia.org/wiki/Classless_Inter-Domain_Routing – deau 2014-09-29 07:19:48