背景:在linux使用过程中,经常需要查找文件,对命令中的通配符pattern和正则表达式的区分不是很清楚.有必要好好研究一下. 1 扫盲 1.1 通配符和正则表达式 当在使用命令行时,有很多时间都用来查找你所需要的文件,如ls find等. S h e l l提供了一套完整的字符串模式匹配规则,或者称之为元字符,当s h e l l遇到上述字符时,就会把它们当作特殊字符,而不是文件名中的普通字符,这样用户就可以用它们来匹配相应的文件名,我理解这可以称为通配符. 通配符与正则表达式是有区别的,简
As the shell reads each line, it "handles" any special characters. This includes variable evaluation (variables start with a "$)," and filename expansion. Expansion of filenames occurs when the characters "*," "?,"
1.假设IP地址是规范的,没有出错误的 sed -n "/[0-9]\{1,3\}.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/p" test 这种匹配存在明显的问题,在正则匹配的过程中,若是出现300,1,255,0:192.168.0. :192.168,1.1.1这种错误的IP地址,任然会被匹配到 2.IP地址规范与否未知的情况下匹配 在这里,逛论坛的时候看见一位老哥踩了一个坑,这里做 一下记录 sed -n -r "/((([0