今天我们继续来学习每天一个命令,今天我们进入了新的章节内容:查找类命令(SEARCH),这章里将包括我们运维常用的三剑客内容,今天学习的是什么命令呢,那就是grep(强大的文本搜索工具)。它能使用正则表达式等其他过滤条件搜索文本,并把匹配的内容打印出来。
grep --help
-E 模式使用的是一个扩展正则表达式
-F 模式使用的是一组新行分隔的固定字符串
-G 模式使用的是基本的正则表达式
-P 模式使用的是Perl正则表达式
-e 使用模式进行匹配
-f 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式
-i 忽略大小写区分
-w 强制模式只匹配整个单词
-x 强制模式只匹配整行
-s 忽略不显示错误信息
-v 选择不匹配的行
-V 显示版本信息并退出
-m 行匹配后停止
-b 用输出行打印字节偏移量
-n 输出的时候打印行号
-H 打印每个匹配项的文件名
-h 禁止输出文件名前缀
-o 仅显示线条匹配图案的部分
-q 抑制所有正常输出
-a 等价于text格式输出
-I 等价于无匹配输出
-d 如何处理目录
-D 如何处理设备、FIFO和socket
-r 像目录=递归
-R 遵循所有符号链接
-L 只打印不包含匹配项的文件名
-l 仅打印包含匹配项的文件名
-c 每个文件只打印匹配行的计数
-T 使标签对齐(如果需要)
-Z 文件名后面打印0
---------------------------------------------——————————————————————————
好,我们来举例说明:
1.在单个文件中查找内容
grep skyfans 1.txt
2.在多个文件中查找
grep skyfans 1.txt 2.txt 3.txt
3.除了要找的行显示其他行内容
grep "skyfans" -v 1.txt
多行内容同上
4.使用正则表达式查找
grep -E "[1-9]+" 1.txt
5.过滤查询出匹配条件的个(行)数
grep -c 666 2.txt
grep -c 888 2.txt
6.过滤显示查询出的匹配内容的行号
grep -n 00 2.txt
7.搜索多个文件并查找匹配的文本在哪些文件中存在
grep -l skyfans 1.txt 2.txt 3.txt
8.过滤某应用进程
ps -ef |grep java