1、grep程序
grep:文本 行过滤工具
sed:文本 行编辑器(流编辑器)
awk:报告生成器,(做文本输出格式化)
grep包含3个命令:grep、egrep、fgrep,他们是用来进行 行模式(pattern)匹配的
egrep = grep -E //使用扩展的正则表达式进行匹配
fgrep = fast grep //只使用文件通配符进行匹配
grep //默认使用正则表达式进行文件匹配
grep的用法:
grep 【option】... PATTERN [filename]
grep的常见选项:----option
-E //支持使用扩展的正则表达式(regexp)
-P //使用perl语言的正则表达式引擎进行搜索(每一种语言的正则表达式引擎都不相同,甚至sed awk grep使用的regexp引擎都不相同)
-i //忽略大小写
-v //进行反选
-o //仅仅输出匹配的内容(默认输出的是匹配到的行)
-n //显示行号
--color=auto //语法着色
-w //匹配固定单词
<[0-9]{2,3}>
<[0-9]{2,3}
PATTERN(pattern)--正则表达式
作用:通过一些特殊字符,来表示一类字符内容,然后交给前面的命令来执行;如果使用特殊字符本身含义,需要 进行转义;
回顾文件通配符:* ? [ ] [^ ]
1、字符匹配
. //任意一个字符-------->?
[ ] //范围内的任意一个字符---------->[ ]
[^ ] //范围外任意一个字符---------->[^ ]
字符类:[0-9] = [[:digit:]]
[0-9][a-z][A-Z] = [[:alnum:]]
[a-z] = [[:lower:]]
[A-Z] = [[:upper:]]
[~!@#$%^&*] = [[:punct:]]
[[:space:]]
2、次数匹配
* //匹配前面的(紧挨着的字符)0次到无数次
? //匹配前面的(紧挨着的字符)0次到1次
+ //匹配前面的(紧挨着的字符)1次到无数次 ( * = ?+)
{m} //匹配前面的字符m次
{m,n} //匹配前面的字符m到n次
{0,n} //匹配前面的字符0到n次
{m,} //匹配前面的字符至少m次
3、位置锚定
^ //锚定行首
$ //锚定行尾
//锚定词首和锚定词尾
> //锚定词尾
< //锚定词首 < oot>
4、分组
abc* abccccc abc我们要看成一个整体
() 示例:(abc)* abcabcabc abccc
**分组特性:默认情况下,Linux系统会分为指定变量,变量的表示形式为1 2 3(后向引用)
补充:扩展的正则表达式,
【标准正则表达式的都去掉】
分组:()后向引用1 2 3......
或: | grep -E "(svm|vms)" /proc/cpuinfo //查看cpu的虚拟功能