[grep] (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
命令格式:grep [option] pattern file;
1、查找指定进程
命令:ps -ef|grep java
2、查找指定进程个数
命令:ps -ef|grep -c java
3、从文件中读取关键词进行搜索,默认是显示的是行
命令1:cat test.txt | grep -f test2.txt
命令2(显示行号):cat test.txt | grep -nf test2.txt
作用:输出test.txt文件中含有从test2.txt文件中读取出的关键词的内容行,可用于按指定关键词(放到一个文件中)搜索日志文件。
-o:只显示被模式匹配到的字符串,而不是整个行
4、从文件中查找关键词,忽略大小写,默认情况区分大小写
命令1:grep ‘linux’ test.txt
命令2(从多个文件中查找):grep ‘linux’ test.txt test2.txt
命令3(忽略大小写):grep -i ‘linux’ test.txt
命令:find . -name “.log” | grep -i error | grep -vi “info”
1)使用find -name 来列出所有log文件,重定向给grep
2)使用grep -i 来查找包含error的行
3)使用grep -vi 来查找不包含info的行
5、grep不显示本身
命令:
ps aux | grep ssh | grep -v “grep” #不包含grep ssh这条命令
grep -v root /etc/passwd | grep -v nologin #将/etc/passwd,将没有出现 root 和nologin的行取出来;
6、-r 递归查找子目录
查找当前目录及其子目录下面包含匹配字符的文件
7、与操作**
grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行;
8、-c 统计行数
9、 -m的使用
2.1 常用命令
首与行尾字节 ^ $,^ 符号,在字符类符号(括号[])之内与之外是不同的! 在 [] 内代表『反向选择』,在 [] 之外则代表定位在行首的意义!
2.2 运维中常见的邮箱和IP地址的获取
这里用到了-o和-P命令
man grep查看
-o, --only-matching:
Show only the part of a matching line that matches PATTERN.
-P, --perl-regexp:
Interpret PATTERN as a Perl regular expression.