^ | 只匹配行首 中括号表示内反向选择 |
$ | 只匹配行尾 |
* | 一个单字符后紧跟*,匹配0个或多个此单字符 |
[] | 匹配[]内字符,可以是一个单字符,也可以是字符序列。可以使用 - 表示[]内字符序列范围,如用[1-5]代替[12345] |
\ | 用来屏蔽一个元字符的特殊含义。因为有时在shell中一些元字符有特殊含义。\可以使其失去应有含义。 |
. | 匹配任意单字符 |
pattern\{n\} | 用来匹配前面pattern出现次数。n为次数 |
pattern\{n,\} | 含义同上,但次数最少为n |
patter\{n,m\} | 含义同上,但pattern出现次数在n与m之间 |
数字[0-9] 字母[A-Za-z] 小写字母[a-z] 大写字母[A-Z]
非数字[^0-9] 非字母[^A-Za-z] 非小写字母[^a-z] 非大写字母[^A-Z]
表
[::alnum] : 数字字符 | [:digit:] : 数字字符 | [:punct:] : 标点符号字符 |
[:alpha:] : 字母字符 | [:graph:] : 非空格字符 | [:space:] : 空格字符 |
[:blank:] : 空格与定位字符 | [:lower:] : 小写字母字符 | [:upper:] : 大写字母字符 |
[:cntrl:] : 控制字符 | [:print:] : 可显示的字符 | [:xdigit:] : 16进制数字 |
example:
数据文件为文件是1.txt
grep -n '^aab' 1.txt //行首为 aab
grep -n '^[^A-Za-z]' 1.txt //行首不为 字母
grep -n '[^a]bb' 1.txt // 查bb前一个字符不为a的bb
grep -n '\a' 1.txt //行尾为a
grep -n 'a..b' 1.txt //匹配这样一个字符串 开头为a 结尾为b 长度为4 akmb aabb
grep -n 'a*' 1.txt 或 grep -n 'aa*' 1.txt //匹配一个或者一个以上全是a的字符串
grep -n 'aaa*' 1.txt //匹配两个以上 全是a的字符串
grep -n 'aaaa*' 1.txt 或者 grep -n 'a\{3\}' //三个及以上 全是a的字符串
grep -n 'a\{1,3\}b' //匹配这样字符串,a出现1-3次 b出现在最后。 ab aab aaab
grep -n 'a*b' 1.txt //匹配所有包含字符a ,字符b 且a在b前面的行 ajljljoihinjnkjnnkoijweoj ewjojrojkb