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的
+ 表示匹配前面的字符串一次或多次
| 表示或的关系