2019 liunx 二周目总结 ——正则表达式

学习内容太多,简要总结一下重要的吧。

grep:文本过滤(模式:pattern)工具。主要作用与文本搜素,更具用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行。模式:由正在表达式字符及文本符所编写的过滤条件。

grep命令选项

grep -m # 匹配#次后停止
grep -v 显示不配pattern匹配到的行
grep -n 显示匹配的行号
grep -c 统计匹配的行数 grep -o 仅显示匹配到的字符串
grep -e 实现多个选项间的逻辑or关系
grep -e 'cat' -e 'dog' file

grep -e 匹配整个单词

正则表达式

匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数

*匹配前面的字符任意次
    贪婪模式:尽可能长的匹配  
.* 任意长度的字符  
\? 匹配其前面的字符0或1次  
\+ 匹配其前面的字符最少1次  
\{n} 匹配前面的字符n次  
\{n,m\}  匹配前面的字符n-m次  
\{n,\}   匹配前面的字符最少n次  
\{,m\}   匹配前面的字符最多m次  

位置锚定:定位出现的位置

^ 行首锚定,用于模式的最左侧  
$ 行尾锚定,用于模式的最右侧  
^PATTERN$ 用于模式匹配整行  
^$ 空行  
^[[:space:]]*$ 空白行  
\< 或 \b 词首锚定,用于单词模式的左侧  
\> 或 \b 词尾锚定,用于单词模式的右侧  
\<PATTERN\> 匹配整个单词  

分组

分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些
变量的命名方式为: \1, \2, \3, ...  
\1表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符  
示例: \(string1\+\(string2\)*\)  
\1 :string1\+\(string2\)*  
\2 :string2  
后向引用:引用前面的分组括号中的模式所匹配字符,而非模式本身
或者:\|
示例:a\|b: a或b C\|cat: C或cat \(C\|c\)at:Cat或cat