正则表达式
功能:描述一个字符串模式,用于字符串匹配操作和替换操作,针对文本内容
字符类别 | 描述 |
---|---|
元字符 | .,*,[,\,^,$ |
其他字符 | 与自身匹配 |
元字符 | 描述 |
---|---|
. | 代表匹配任意单字符 |
* | 表示该符号前一个字符出现0次或者任意多次 |
[ | 表示集合,在集合中\,*,.代表其本身 |
\ | 转移字符,将特殊字符转义为本身 |
- | [a-z]两个字符之间表示区间,否则代表本身 |
^ | 集合中时表示取反,在正则表达式行首表示匹配行首的字符串 |
$ | 在正则表达式行尾表示匹配行尾的字符串,其他位置代表本身 |
PCRE
对BRE进行了改进:
- (),表示分组
- | 表示逻辑运算 (pink | green)
- 表示1次或多次
- ? 表示出现0次或1次
- {m,n}, 出现m至n次
- 命名的预定义集合: [[:xdigit:]] 16进制数字,\d $\rightarrow$ 数字,\D $\rightarrow$ 非数字
文本编辑工具
grep
行筛选
用法: grep [option] 模式 文件名列表
选项:
- -n 显示时每行前面显示行号
- -v 显示所有不包含模式的行
- -i 字母比较时忽略字母的大小写
sed
流编辑
用法:
单个命令: sed ‘cmd’ 文件列表
多个命令: sed -e ‘cmd’ -e ‘cmd1’ 文件列表
执行文件里的命令: sed -f 命令文件 文件列表
模式描述增加( 和 ), 不影响匹配, 用于分组, 与之配套用的是 \0, \1, \2…表示第几个括号括起来的内容
替换: ‘s/xxx/xx/g’
awk
复杂筛选和加工,朱行扫描进行文本处理的一门语言
用法:
awk ‘程序’ 文件名列表
awk -f 程序文件名 文件名列表
程序: 条件 {动作}, awk自动对每行文本执行条件判断,满足则执行动作, 多段程序使用空格或分号隔开
变量
NR, 行号
每行以空格为域分隔符,$1 代表第1个空格间的内容, $0代表整行内容
条件
关系运算: <,>, ==, <=, >=, !=
逻辑运算: || , &&, !
正则表达式的模式匹配: /regexpr/ 包含该模式的行,执行动作
不指定任何条件,对对所有文本行执行动作
BEGIN 开始处理所有文本行之前执行动作,END 处理完所有文本行之后执行动作
动作
加减乘除
print 变量1,变量2
print(“格式串”,变量1,变量2)
流程控制: if 条件判断,for 循环控制