一、语系对正则表达式的影响
对[a-z]的查找结果影响很大 |
|
LANG=C | 0 1 2 3 4 … A B C D … a b c d … |
LANG=zh_CN | 0 1 2 3 4 … a A b B c C … |
二、特殊符号与代表意义
[:alnum:] | 英文大小写字符与数字 [a-z] [0-9] [A-Z] |
[:alpha:] | 英文大小写字符[a-z] [A-Z] |
[:blank:] | 空格与[Tab]按键 |
[:digit:] | [0-9] |
… |
|
见P349 |
|
三、基础正则表达式字符
^word | 待查的字符串(word)在行首 |
word$ | 待查的字符串(word)在行尾 |
. | 一定有一个任意的字符 |
\ | 转义字符,将后面紧跟字符的特殊含义除去 |
* | 前一个字符可以有0到无穷多个 |
[abc] | 可以是a、b或c |
[a-z] | 范围内的字符 |
[^abc] | 不能是a\b\c |
\{n,m\} | 连续n到m个前一个字符 |
四、支持正则表达式的工具
1、sed -- 整行处理
sed […] 'n1,n2动作' | n1,n2:第n1行和n2行之间 动作: a:新增,后加新增的字符串 c:替换,后加替换的字符串 d:删除,后不加任何东西 i:插入,后加字符串,会在当前的上一行出现 s:可接正则表达式,主要用于替换字符 p:打印 |
2、awk -- 将一行分为字段进行处理
awk '条件1 {动作1} 条件2 {动作2} …' filename | $i:表示按照[Tab]或空格分割的第i个字段 $0:表示一整行数据 |
awk的内置变量 |
|
NF | 一行拥有的字段总数 |
NR | 目前处理的是第几行的数据 |
FS | 目前的分隔符 |
awk的逻辑运算符 |
|
< > == != >= <= |
|
3、printf -- 处理打印格式
printf '打印格式' 实际内容 | %ns:n位字符 %ni:n位数字 %N.nf:共有N位(含小数点),小数有n位 |
见P362 |
|