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

linux grep 使用通配符 linux的grep命令怎么用_linux grep 使用通配符

<2>、在/etc/passwd文件中找出以sh词首开头的行。

grep "\<sh" /etc/passwd

linux grep 使用通配符 linux的grep命令怎么用_linux grep 使用通配符_02

<3>、在/etc/passwd文件中找出以sh词尾结尾的行。

grep "\Bsh\b" /etc/passwd

linux grep 使用通配符 linux的grep命令怎么用_linux grep 使用通配符_03