正则表达式
Posted Will.Guo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式相关的知识,希望对你有一定的参考价值。
符号 | 含义 | 举例 |
---|---|---|
. | 用于匹配除换行符外任意字符 | grep ‘r..t’ /etc/passwd |
* | 用于匹配前一个字符0次或任意多次 | grep ‘r*t’ /etc/passwd |
\\n,m\\ | 灵活的控制字符的重复次数 | grep ro2t(只有两次) ;grep ro2,t(至少两次);grep ro2,5t(2-5次) |
^ | 匹配开头的字符 | grep ‘^root’ |
$ | 匹配结尾的字符 | grep ‘root$’ ; grep ‘^r.*t$’(以r开头,中间包含任意字符串,以t结尾) |
[] | 匹配方括号中出现的任意字符 | grep [A-Za-z0-9] ; 注:如果^出现在[]中不表示匹配开头,而表示取反的意思,即[^A-D]:非A-D的字符 |
|转义 | ||
\\< \\> | 界定单词的左边界和右边界 | grep ‘\\’ |
\\d | 等价于[0-9] | |
\\w | 等价于[A-Za-z0-9] | |
\\W | 等价于[^A-Za-z0-9] | |
? | 匹配前一个字符0次或1次 | grep ‘ro?t’:可匹配rot rt |
+ | 匹配前一个字符1次以上 | grep ‘ro+t’:可匹配rot root rooot等 |
| | 多种规则取“或” | 电话号: ^0[0-9]2-[0-9]8|^0[0-9]3-[0-9]8 : 匹配区号3-4位,8位尾号长度的电话号,可缩写为^0[0-9]2,3-[0-9]8 |
() | 和|混用,用来枚举一系列可替换的字符 |
正则表达式主要用于文件内容的匹配上,通配符主要用于文件名的匹配上。
文本处理工具
- sed(stream editor) 以行为单位的文本处理工具
- awk 以列为单位的文本处理工具 $1,$2,$3分别表示第1,2,3列,以此类推,$0表示所有列
使用awk求第三列的和
awk ‘BEGINtotal=0total+=3ENDprint total’
使用awk求第三列的平均数
awk ‘BEGINtotal=0total+=3ENDprint total/NR’
以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章