关于正则表达式的一些个人笔记
来源:互联网 发布:局域网共享打印软件 编辑:程序博客网 时间:2024/05/16 08:24
正则表达式:
使用正则表达式时,应注意当前的语系环境。
表12-1 P349
[:alnum:] :英文大小写以及数字
[:alpha:] :英文大小写
[:blank:] : 空格与【tab】按键
[:cntrl:] : 键盘上面的控制按键,包括CR,LF,Tab,Del等
[:digit:] : 数字 0-9
[:graph:] : 除了空格外的其他按键。
[:lower:] : 代表小写字符 a-z
[:print:] : 任何可以被打印的字符
[:punct:] :标点符号
[:upper:] : 代表大写字符 A-Z
[:space:] : 会产生空白的字符,包括空格键【Tab】 CR 等
[:xdigit:] : 代表十六进制数字类型
grep 的一些高级用法:
grep [-A] [-B] [--color=auto] '搜寻字符串' filename
-A : 列出该行和后续N行
-B : 列出该行和前面N行
--color=auto : 将正确的选取数据列出颜色
eg1:dmesg | grep -n -A3 -B2 --color=auto 'eth'
可以在 ~/.bashrc 内加上这行:alias grep='grep --color=auto'。 设置别名,然后source ~/.bashrc 来生效命令即可。
基础正则表达式练习
1. grep -n 'the' filename 提取存在the的行
2. grep -vn 'the' filename 反向提取该行没有the的行
3. grep -in 'the' filename 忽略大小写
4. grep -n 't[ae]st' filename 't[ae]st'的含义是“tast” or “test”
5. grep -n '[^g]oo' filename 提取文件中带oo的字符,但oo前不带g
6. grep -n '[^a-z]oo' filename oo前不带小写字母
7. grep -n ‘[^[:lower:]]oo’ filename
8. grep -n '[[:digit:]]' filename
行首与行尾字符 "^ $"
9. grep -n '^the' filename 只选取行首存在the的字符
10. grep -n '^[a-z]' filename 列出开始是小写字母的行
11. grep -n '\.$' filename 列出结尾是. 的字符,由于. 具有其他含义,所以这里加入转移字符。
12. grep -vn '^$' filename | grep -vn '^#'
13.任意字符 . 与重复字符 *
两者在正则表达式中的含义:
. : 代表一定有一个任意字符的意思。
* : 代表重复前一个0到无穷多次的意思,为组合形态。
14. 限定连续RE字符范围{}
grep -n 'o\{2\}' filename
grep -n 'go\{2,6\}g' filename
基础正则表达式字符
^word
意义:word为待查找的字符串。且在行尾。
例子:grep -n '^state' filename
word$
意义:word为待查找的字符串,且在行尾。
例子:grep -n '^state' filename
.
意义:代表一定有一个任意字符的字符。
例子:grep -n 'e.e' filename
\
意义:转义字符,将特殊符号的特殊意义去除。
例子:grep -n \' filename :查找含有单引号的那一行
*
意义:重复零个到无穷个的前一个字符
例子:grep -n 'ess*' filename
[list]
意义:从字符集合的RE字符里里面找出想要选取的字符
例子:grep -n 'g[ld]' filename : 查找gl 或 gd 的字符
[n1-n2]
意义:从字符集合的RE字符里面找出想要选取的字符范围
例子:grep -n '[0-9]' filename : 查找含有任意数字的那一行
[^list]
意义:从字符集合的RE字符里面找出不要的字符串或范围
例子:grep -n 'oo[^t]' filename : 字符串oo的结尾不能有t
\{n,m\}
意义:连续n到m个的前一个RE字符,\{n\}连续n个RE字符,\{n,\}连续n个以上RE字符
例子:grep -n 'go\{2,3\}g' filename
阅读全文