@breakerthb
2019-02-16T08:58:04.000000Z
字数 1018
阅读 1777
Linux
语系:LANG=C
特殊符号:
| 匹配模式 | 说明 | 举例 |
|---|---|---|
| [:alnum:] | 字母与数字 | 0-9,A-Z,a-z |
| [:alpha:] | 字母 | A-Z,a-z |
| [:blank:] | 空格 和 [Tab] | |
| [:cntrl:] | 键盘上控制按键:CR, LF, Tab, Del | ASCII控制字符 |
| [:digit:] | 数字 | 0-9 |
| [:graph:] | 除了空格符(空格和Tab)以外的全部按键 | |
| [:lower:] | 小写字母 | a-z |
| [:print:] | 可打印字符 | 代表任何可以被打印的字符 |
| [:punct:] | 标点符号字符 | 标点符号:“‘?!;:# $ |
| [:upper:] | 大写字母 | A-Z |
| [:space:] | 任何产生空白的字符 | 空格、Tab、CR |
| [:xdigit:] | 十六进制数 | 0-9,A-F,a-f |
| 字符 | 说明 | 用法 | 举例 |
|---|---|---|---|
| |忽略字符 | 忽略正则表达式中特殊字符的原有含义 | ||
| ^ | 行首 | ^wordword在行首 |
grep -n '^#' test.txt查找行首为# |
| $ | 行尾 | word$word在行尾 |
grep -n '!$' test.txt查找!结尾 |
| \< | 从匹配正则表达式的行开始 | ||
| > | 到匹配正则表达式的行结束 | ||
| . | 一个任意字符 | a.b结果是3个字符 a..b结果是4个字符 |
|
| \|转义字符 | |||
| * | 重复 | 重复0个或无穷多个前一个字符 | ls -l * = ls | grep -n '^a.*' grep 'go*d' test.txt得到gd、god、good、goood...... |
.* |
表示任意多个任意字符 | ||
| [ ] | 匹配单个字符 | [A]匹配字符A |
|
| [list] | 匹配集合中的某个字符 | [abcd]匹配abcd任意一个字符 |
grep -n 'a[alf]y' test.txt |
| [n1-n2] | 选取范围 | [A-Z]匹配A-Z之间的任意一个字母 |
grep '[A-Z]-00' test.txt grep '[a-zA-Z]' |
| [^list] | list的补集 | [^abcd]匹配除了abcd的任意一个字符 |
|
| {n,m} | 连续前一个字符 | {n,m}匹配n~m个前一个字符 |
grep -n 'go{2,3}g' test.txt找g与g之间有2~3个o |
| 字符 | 说明 | 用法 |
|---|---|---|
| + | 重复一个或一个以上的前一个RE字符 | egrep -n 'go+d' test.txt |
| ? | 零个或一个前一个字符 | egrep 'go?d' test.txt得到gd或god |
| | | 或的方式找字符串 | |
| () | 找出组字串 | egrep -n 'g(la|oo)d' test.txt得到glad或good |
| ()+ | 多个重复组判别 | egrep 'A(xyz)+C'A开头,C结尾,中间n组xyz |
