今天项目需要在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”,这一段暂时还没有研究出来如何最多匹配,要是有知道的欢迎留言告知~~~