三剑客:grep sed awk
grep:文本行过滤工具
sed: 文本行编辑器(流编辑器)
awk: 报告生成器,输出格式化
grep包含三个命令:
grep egrep fgrep 。他们是用来进行行模式匹配的
egrep:=grep -E 使用扩展的正则表达式进行匹配
fgrep =fast grep 只使用文件通配符进行匹配
*grep默认使用正则表达式进行文本匹配
grep的用法:
grep [option] …PATTERN [filename]
grep的常用选项:
-E |
支持使用扩展正则表达式 |
-P |
使用perl语言的正则表达式引擎进行搜索(每一种语言的) |
-I |
忽略大小写 |
-o |
仅仅输出匹配的内容(默认输出的是行) |
-v |
进行反选 |
--color=auto |
语法着色 |
-n |
显示行号 |
pattern--正则表达式:
作用:通过一些特殊字符,来表示一类字符内容,然后交给前面的命令来执行。如果使用特殊本身含义,就需要进行转义。
1.字符匹配:
. 任意一个字符 ?
[] 范围内的任意一个字符
[^]范围外的任意一个字符
字符类:[:digit:] [:alnum:] [:alpha:] [:lower:] [:upper:] [:space:] [:punct:]
2.次数匹配
* 匹配前面的字符0次到n次
?匹配前面的字符0次到1次
+ 匹配前面的字符1次到n次
{m}匹配前面的中字符m次
{m,n}匹配前面的字符m到n次
{0,n}匹配前面的字符0到n次
{m,} 匹配前面的字符至少m次
3.位置锚定
^ 锚定行首
$ 锚定行尾
锚定词首和锚定词尾
> 锚定词尾
< 锚定词首
4.分组
abc* abccccc abc我们要看成一个整体
() 示例:(abc)* abcabcabc abcccc
**分组特性:默认情况下,linux系统会为分组指定变量,,变量的表示形式123…………
(((2(5[0-5]|[0-4]d))|[0-1]?d{1,2})(.((2(5[0-5]|[0-4]d))|[0-1]?d{1,2})){3})