1. 程式人生 > >linux下分割字串已經如何正則匹配日期與IP

linux下分割字串已經如何正則匹配日期與IP

今天專案需要在linux下將一個字串中的ip與日期提取出來,因為查了挺多資料,記到這裡方便以後檢視。

linux下分割字串

linux下分割字串可以使用命令expr,expr有許多功能,具體的使用方法可以使用man檢視,這裡只介紹分割字串的功能。

expr "/data/backup/192.168.128.88/test/capitalallocation/consume/201602/08/18.log" : '.*([0-9]\{6\}\/[0-9]\{2\}\).*'

這段的作用是用字串中,將201602/08這串字串取出,因為在linux的shell下,沒法只用\d等高階用法,因此只能使用如上方式,至於開頭的.*和結尾的.*一定要加上,不然這樣就無法匹配了。同理,IP也是用這種規則匹配出來

expr $1 : '.*\(\/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\).*' | sed 's/\///'

這樣取出的結果是192.168.128.88。後面的sed是用來將前面那段拿出來的/192.168.128.88中的“/”給刪除,如果沒有將前面的“/”拿出來,則會取出“2.168.128.88”因為前面的.*會將“19”也包括了,就只剩下最少匹配的“2”,這一段暫時還沒有研究出來如何最多匹配,要是有知道的歡迎留言告知~~~