grep程序
Linux下有文本处理三剑客--grep sed awk
grep:文本行过滤工具
sed:文本行编辑器(流编辑器)
awk:报告生成器(做文本输出格式化)
grep
包含三个命令:grep egrep fgrep,它们是用来进行行模式(patter)匹配的
egrep=grep -E //使用扩展的正则表达式进行匹配
fgrep=fast grep //只使用文件通配符进行匹配
*grep默认使用正则表达式进行文本匹配*
grep的用法:
grep [option]...PATTERN [filename]
a*
grep的常见选项--option
-E 支持使用扩展的正则表达式(ERE)(regexp)
-P 使用perl语言的正则表达式引擎进行搜索(每一种语言的正则表达式引擎都不相同,甚至sed grep awk使用的regexp引擎也不相同)
-i 忽略大小
-v 进行反选
-o 仅仅输出匹配的内容(默认输出的是匹配到的行)
--color=auto 语法着色
-n 显示行号
-w 匹配固定单词
PATTERN--正则表达式
作用:用过一些特殊字符,来表示一类字符内容,然后交给前面的命令来执行;如果使用特殊字符本身含义,就要用进行转义
回顾:文件通配符(globbing)
*?[][^]
1、字符匹配
. 代表任意一个字符?
[] 范围你饿的任意一个字符
[^] 范围外任意一个字符
字符类:[:digit:][:alnum:][:alpha:][:lower:][:upper:][:space:][:punct:]
2、次数匹配
*匹配前面的字符0次到无数次
?匹配前面的字符0次到1次
+匹配前面的字符1次到多次
{m}匹配前面的字符m次
{m,n}匹配前面的字符m到n次
{0,n}匹配前面的字符0次到n次
{m,}匹配前面字符至少m次
3、位置锚定
^锚定行首
$锚定行尾
锚定词首和锚定词尾
>锚定词尾
<锚定词首
4、分组
()实例:(abc)* abcabcabc...
**分组特性:默认情况下,Linux系统会为分组指定变量,变量的表示形式 1 2 3...
示例:(ab+(xy)*),其中1 = ab+(xy)*,2=xy
abbbbxyxyxyabxy
补充:扩展的正则表达式
【标准的正则表达式中的都可以去掉】
分组:()后向引用 1 2 3...
或:|