符号 | 含义 | 举例 |
---|---|---|
. | 用于匹配除换行符外任意字符 | grep ‘r..t’ /etc/passwd |
* | 用于匹配前一个字符0次或任意多次 | grep ‘r*t’ /etc/passwd |
\{n,m\} | 灵活的控制字符的重复次数 | grep ro{2}t(只有两次) ;grep ro{2,}t(至少两次);grep ro{2,5}t(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 ‘BEGIN{total=0}{total+=3}END{print total}’
使用awk求第三列的平均数
awk ‘BEGIN{total=0}{total+=3}END{print total/NR}’