一、grep简介
1.介绍
全局查找正则表达式并且打印结果行的命令。
2.输入
一个文件或者一个标准输入(stdin),或者是一个“-”连字符()。
3.输出
打印在屏幕上
4.grep家族扩展命令
egrep、fgrep
二、 Grep命令的应用
1.命令格式
grep [选项] 模式 [文件…]
例如:grep root /etc/passwd
(1) grep在文件/etc/passwd中查找模式root
(2) 如果查找成功,文件中相应的行会显示在屏幕上;如果没有找到指定的模式,就不会有任何输出。
(3) 如果指定的文件不是一个合法文件,屏幕上会显示报错信息。
(4) 如果发现了要查找的模式,grep就返回退出状态0,表示成功;如果没找到,返回的退出状态为1;找不到指定文件时,退出状态将是2。
(5) grep的程序输入可以来自标准输入或管道、文件。
(6) 如果忘了指定文件,grep会以为你要从标准输入获取输入,于是停下来等你键入一些字符。
(7) 如果输入来自管道,就会有另一条命令的输入通过管道变成grep命令的输入。
例如:ps -ef | grep root
ps命令的输出被送到grep,然后所有包含root的行都被打印到屏幕上。
2.原理
grep命令在一个或多个文件中查找某个字符串的模式。
3.注意
(1) 如果模式中包含空格,就必须用引号括起来。
(2) 模式可以是一个被括号括起来的字符串,也可以是单个词。
(3) 位于模式之后所有的单词都被视为文件名。
(4) grep不会对输入文件进行任何修改和变化。
三、正则表达式元字符
grep支持很多正则表达式元字符,以便用户更精确的定义要查找的模式。
四、grep选项
五、grep使用正则表达式示例
1. grep root /etc/passwd
2. grep ^root /etc/passwd
3. grep login$ /etc/passwd
4. grep 'bind Da' /etc/passwd
因为bind和Da中间有空格所以加了单引号,否则只会匹配bind
5. grep '5..' test.txt
打印所有包含5,后面跟一个.号,再跟一个任意字符的行。.代表单个字符,被转义后,只代表本身一个.号
6. grep '^[rt]' /etc/passwd
7. grep '[^0-9]' test.txt
8. grep '[A-Z][A-Z][A-Z]' test.txt
9. grep "root*" /etc/passwd
10. grep '[a-z]{9}' /etc/passwd
11. grep '' test.txt
12. grep '' /etc/passwd
打印所有包含以小写字母开头,以n结尾,中间由任意多个字符组成的单词的行,注意:符号.*代表任意字符,包括空格
六、 grep选项示例
1. grep -n 'north' test.txt
2. grep -i 'pid' test.txt
3. grep -v 'root' /etc/passwd
4. grep -l 'root*' /etc/passwd ~/test.txt
使用-l使grep只输出包含模式的文件名,而不输出文本行
5. grep -c 'root' /etc/passwd
打印含有模式的行的数目
6. grep -w 'north' test.txt
查找作为一个词,而不是词的一部分出现的模式
七、 grep与管道
1. ls | grep 'test'
2. ls | grep ^te
ls命令输出通过管道传给grep
八、 egrep扩展
egrep在grep的基础上增加了更多的元字符。但是egrep不允许使用{},{}
1. egrep使用的正则表达式元字符
2. 示例
grep不支持”|“这个,egrep支持”|“,egrep查到了包含west或north的行