正则表达式

功能:描述一个字符串模式,用于字符串匹配操作和替换操作,针对文本内容

字符类别 描述
元字符 .,*,[,\,^,$
其他字符 与自身匹配
元字符 描述
. 代表匹配任意单字符
* 表示该符号前一个字符出现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 循环控制