通配符与正则表达式
1. 通配符,完全匹配:ls abc,只能显示文件名是abc的文件,如果要显示abcdef,必须ls abc*
2. 正则表达式,包含匹配:grep “abc” test,可以显示包含了abc的行
3. 基础正则表达式(别的语言中可能比这里规则多)
* | 前一个字符匹配0次或者多次:a*,表示a匹配0次或者多次 |
. | 匹配除了换行符外任意一个字符,相当于通配符中的? |
^ | 匹配行首。例如^hello会匹配以hello开头的行 |
$ | 匹配行尾。例如hello$会匹配以hello结束的行 |
[] | 匹配[]中指定的任意一个字符,只匹配一个字符 |
[^] | ^在[]里面,代表取反,[^a-z]代表任意一个非小写字母 |
\ | 转译符 |
\{\n} | 表示其前面的字符出现了n次。[0-9]\{4\}匹配四位数字,[1][3-8][0-9]\{9\}匹配手机号 |
\{n,\} | 表示其前面的字符出现了不小于n次。[0-9]\{2\}表示两位以上的数字 |
\{n,m\} | 表示前面的字符至少出现了n次,最多出现m次[a-z]\{8,16\}表示匹配最少8次,最多16次的小写字母 |
|
|
grep “a*” test #显示test全部内容(在正则表达式中,这种写法没有任何作用) grep “aa*” test #显示至少包含有一个a的行 grep “aaa*” test #显示至少包含2个连续a的行 |
grep “s..d” test #匹配s与d之间有2个字符的行,如:said grep “s.*d” test #匹配s与d之间有任意字符的行,即,行里有s,d的行 grep “.*” test #匹配所有 |
grep “^H” test #匹配以H开头的行 grep “H$” test #匹配以H结尾的行 grep -n “^$” test #匹配空白行, -n显示行号 |
grep s[ab]id test #匹配包含a,b中任意一个字符的行,即包含said或者sbid的行才能被匹配 grep ^[0-9] test #匹配以数字开头的行 grep [^0-9] test #匹配不包含数字的行 grep ^[^0-9] test #匹配不是数字开头的行 |
grep “\.$” #匹配以 . 结尾的行 grep “.$” #匹配以字符结尾的行,即非空白行 |
grep “h\{\3}” #匹配有三个连续h的行 grep [0-9]{\3\} #匹配有三个连续数字的行 |