linux grep命令使用详解

grep是我们最常用的命令之一,但是正真用的熟的不多,把基础命令记牢固,能帮我们节约很多时间

grep的option

-A 1 表示找到所有匹配行,并显示所有匹配行后的一行
在错误日志查找时还是很有用

-B 1 表示找到所有匹配行,并显示所有匹配行的前面一行

-C 1表示找到所有匹配行,并显示所有匹配行的前一行,后一行

-a 表示把所有文件当作ASCII文件来处理 搜索二进制文件
//a.pcap是一个tcpdump生成的文件,为binary文件,使用grep不能搜索

-b 表示显示match的字符串在文件中的offset

-c 显示有多少行match

–color 是把match的字符用不同颜色标示出来

-e 后面跟一个正则表达式,指定多个正则表达式的时候很有用

-f可以指定pattern在我们的文件中 pattern文件中的每一行都会来进行匹配

-m 最多匹配几个后,就停止,这样速度会比较快

-n 匹配之后,在前面打印行号,这个还是有用的

-o 只打印匹配的内容

-R 搜索子目录
$ll
total 208
-rw-r–r– 1 * * 91868 5 1 23:05 a.pcap
-rw-r–r– 1 * * 31 5 2 22:39 a.txt
-rw-r–r– 1 * * 4 5 1 23:18 b.txt
drwxr-xr-x 3 * * 102 5 4 18:58 dir1 //这是一个目录
-rw-r–r– 1 * * 4 5 4 18:49 pattern.txt

//只能搜索当前目录

-v invert查找 下面为在a.txt中,查找不包含”a”的行 这个命令会经常使用

-w 查找一个词,

grep 正则表达式

^pattern 表示开头处开始匹配

. 为匹配任意单个字符

“r.*h”
//匹配一个字符串,其中有r,有h,且r在前,h在后,且r和h之间可以间隔任意长度的任意字符串,sat考试培训当然也可以没有间隔

//匹配一个字符串,其中r是第一个字符,h是最后一个字符,且r和h之间可以间隔任意长度的任意字符串,当然也可以没有间隔

匹配指定范围内的任意字符 [e] 匹配任意单个字符
$ echo “redh” |grep “[e]”
redh

$ echo “redh” |grep “[s]”

匹配指定范围内的任意字符 [eh] 匹配e或h

匹配指定范围内的任意字符 [a-z],[1-3a-b] [1-3a-bX-Z]

//[^] 匹配指定范围外的字符

[[:space:]] 匹配空白字符

\? 表示匹配前面的字符串0次或1次

{m,n} 匹配前面的字符串m到n次

{2,} 匹配前面的字符串至少两次

// \

//() 用来进行分组, 下面这个就是匹配带有re和rea的

+ 表示匹配前面的字符串一次或多次

| 表示或的关系 

posted @ 2018-11-29 13:35  张嫣然  阅读(1494)  评论(0编辑  收藏  举报
友情链接:http://www.taidai-tj.com/ | http://www.ai200808.com/ | http://wh.xhd.cn/