文本处理三剑客:
grep:文本过滤工具(模式:PATTERN )
sed:流编辑器,文本编辑工具
awk:在linux上实现为gawk,文本报告生成器(格式化文本)
正则表达式:由一类特殊字符及文本字符所编写的模式,其中有些字符不表示其字面意义,而是用于表示控制或通配
基本正则表达式:BRE
扩展正则表达式:ERE
字符匹配元字符:
.:匹配任意字符
[]:匹配指定范围内的单个字符
[^]:匹配指定范围外的单个字符
匹配次数元字符:
*:匹配前面字符任意次,包含0次
.*:匹配任意长度任意字符
\?:匹配前面字符0或1次,即前面字符可有可无
\+:匹配前面字符1次或多次,即前面字符至少一次
\{m\}:匹配前面字符m次
\{m,n\}:匹配前面字符至少m次,至多出现n次
\{0,n\}:至多n次
\{m,\}:至少m次
位置锚定元字符:
^:行首锚定,用于模式最左侧
$:行尾牟定,用于模式最右侧
^PATTERN$:用于匹配整行
\<或\b:词首锚定,用于单词左侧,单词指的是连续的字符串
\>或\b:词尾锚定,用于单词右侧
\<PATTERN>\:用于匹配任意单词
分组及引用:
\(\):将一个或多个字符捆绑在一起,当做一个整体对待
Note:括号内的模式匹配到的内容会被正则表达式引擎保存在内部的变量中
\1:左侧起第一个括号与对应由左括号之间的字符
\2:左侧起第二个括号与对应由左括号之间的字符
例如:He love his lover
He likes his lover 用 \(l..e\).*\1 来匹配like...........like
She likes her liker
She loves her liker
grep
作用:搜索工具,根据用户指定的“模式(过滤条件)“对目标文件逐行进行匹配检查,并打印匹配到的行
模式:由正则表达式的元字符及文本字符所编写出的过滤条件
(1)grep PATTERN FILE
(2)grep -f FILE1 FILE2 从FILE1中读取条件,在FILE2中搜索
-i:忽略大小写
-v:反向匹配
-E:支持扩展的正则表达式
-q:不管匹配匹配不到都不输出,在shell脚本中多用其$?来进行判断
-A #:将匹配行后#行一并显示
-B #:将匹配行前#行一并显示
-C #:将匹配行前后#行一并显示