grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。常用的有grep,egrep,fgrep。它们的区别如下:
grep:在没有参数的情况下,只能输出符合RE(regular expression)字符
egrep:它等同于grep -E,和grep最大的区别就是表现在转义字符上,比如grep把字符?+{}|()解释为普通字符,我们用grep时,只能使用转意字符,比如做次数匹配时,用\{1,3\},egrep则不需要,直接用{1,3}就行。
fgrep:等同于与grep -f,但是不能使用正则表达式,所有的字符匹配功能均以消失。
接下来我们就来说说grep常用的一些参数:
-C:打印出匹配的行的上下文前后各 n行。也就是说不但能匹配到指定的那一行,而且字符前后所指定的n行也能显示出来。如下:
-i: 忽略模式 PATTERN 和输入文件中的大小写的分别。也就是不区分大小写字符。如下:
-n:在输出的每行前面加上它所在的文件中它的行号,如下
由上面的file文件可知,abc在第二行。
-v: 改变匹配的意义,只选择不匹配的行。也就是说反向匹配,比如我们要匹配abc,匹配的就不是abc,是不是有点乱?
-o : 显示匹配的行中与 PATTERN 相匹配的部分。如下:
-c:为每一个输入文件打印一个匹配的行的总数。如下:
-A n:输出匹配到的行,并显示其后的n行;如下:
-B n:输出匹配的行,并输出其前面的n行,如下:
-l:匹配多个文件时,只显示匹配的文件名,如下:
-L:和上面的-l相对,显示不匹配的文件名,如下:
-V:显示版本号:
-q:安静。不向标准输出写任何东西。如果找到任何匹配的内容就立即以状态值 0 退出,即使检测到了错误:
我们有一个file文件,里面的内容是 aaa,当我们不加-q选项时,直接给我门匹配到了并输出到屏幕上,加上-q选项之后,没有往终端输出任何消息,但我们echo它的状态码时,确实为0.
-R,-r: 递归地读每一目录下的所有文件。
^$:代表空行:
-b:在输出的每行前面同时打印出当前行在输入文件中的字节偏移量。如下:
这里注意,选项-b -o一般总是配合使用。
-e:该选型可以匹配多个模式,如下:
上面我们想匹配name和yxs这两个字符串,可以使用-e选项。
grep命令的选型很多很多,今后慢慢接触再慢慢了解吧,先说到这里。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。