grep篇
1、介绍
在Linux中grep命令用于查找文件里符合条件的字符串。
grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为“-”,则grep指令会从标准输入设备读取数据。
2、语法
grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>]
3、常用参数
●-E : 开启扩展(Extend)的正则表达式。
●-i : 忽略大小写(ignore case)。
●-v : 取反(invert),只打印没有匹配的,匹配到的不进行打印
●-n :显示行号
●-w : 被匹配的文本只能是单词,而不能是单词的某一部分,例如文本中有liker,而我只进行搜寻like,就可以用-w选项来避免匹配liker。
●-c : 显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示多少行没有被匹配到。
●-o : 只显示被模式匹配到的字符串。
●--color :将匹配到的字符串以颜色高亮显示。
●-A n : 显示匹配到的字符串所在的行及其后n行,after
●-B n : 显示匹配到的字符串所在的行及其前n行,before
●-C n : 显示匹配到的字符串所在的行及其前后各n行,context
4、匹配字符
● . : 任意一个字符。
●[abc] : 表示匹配一个字符,这个字符必须是abc中的一个。
●[a-zA-Z] :表示匹配一个字符,这个字符必须是a-z或A-Z这52个子母中的一个。
●[^123] : 匹配一个字符,这个字符是除了1,2,3以外所有的字符。
对于一些常用的字符集,系统也对此做了定义
●[A-Za-z] 等价于 [[:alpha:]]
●[0-9] 等价于 [[:digit:]]
●[A-Za-z0-9] 等价于 [[:alnum:]]
●tab , space 等价于 [[:space:]]
●[A-Z] 等价于 [[:upper:]]
●[a-z] 等价于 [[:lower:]]
●标点符号 [[:punct:]]
5、匹配次数:
●\{m,n\} : 匹配其前面出现的字符至少m次,最多n次。
●\? : 匹配其前面出现的内容任意次,等价于\{0,\}。
●* : 匹配其前面出现的内容任意次,等价于\{0,\},所以”.*”表述任意字符任意次,即无论什么内容都会进行匹配。
6、位置锚定
● ^ : 锚定行首
● $ : 锚定行尾。技巧:”^$”用于匹配空白行。
●\b或\< : 锚定单词的词首。如”\blike”不会匹配alike,但是会匹配liker。
●\b或\> : 锚定单词的词尾。如”\blike\b”不会匹配alike和liker,只会匹配like
●\B : 与\b的作用相反。
实例:
<1>、在/etc/passwd文件中找出以ro开头的行。
grep "^ro" /etc/passwd
<2>、在/etc/passwd文件中找出以sh词首开头的行。
grep "\<sh" /etc/passwd
<3>、在/etc/passwd文件中找出以sh词尾结尾的行。
grep "\Bsh\b" /etc/passwd