文章目录
- 1. 基本用法
- 2.字符转义
- 3.二进制文件查找
- 4.打印目标字段的附近行
- 4. 多条件过滤
- 5. 目录中过滤——用于在文件夹中筛选/排除指定后缀文件
- 6.反向过滤——用于筛选
- 7.只输出匹配内容——用于统计
- 8. 筛选出包含字段的文件
- 9.正则匹配
- 10.管道和grep
- 11.grep和wc/uniq/sort的合用
1. 基本用法
- 使用man grep可以查看linux自带的帮助文档
gvim打开卡,cat可以在terminal中快速打开文本
grep "word" target.txt
//在 target.txt中找word单词
grep "word" target1.txt target2.txt
//在 target1、2.txt中找word单词
grep "word" -r ./
//在当前目录下所有文件找word单词
grep -i "word" -r ./
//在当前目录下所有文件找word单词,忽略大小写
cat target.txt | grep -i "word"
// |是管道命令,将上个指令的结果所谓下个指令的输入
2.字符转义
有三种:” ‘ \
1.如何查双引号
grep \" 1.txt
2.如何查\
grep \\\\ 1.txt
grep -F '\' 1.txt
//-F表示以字符的方式读取
grep ’\\‘ 1.txt
3.如何查单引号
grep \’ 1.txt
3.二进制文件查找
Linux二进制文件指的是可执行文件,即计算机可以直接执行的程序。二进制文件是按信息在内存中的格式表示的文件,通常不能直接查看,而必须使用相应的软件来查看。
grep -a "word" wordexe
4.打印目标字段的附近行
-A2
//打印之后的若干2行
-Bn
//打印之前的n行
-C2
//打印前后的2行
4. 多条件过滤
-e 表示或关系
借助管道符多个-e级联可以等价实现与
如下图,三个-e可以从1,txt中以或的关系筛选出行
更进一步地,利用管道操作,可以实现与的过滤。先过滤出包含hello的,用这个结果再进一步过滤包含zhouge的
5. 目录中过滤——用于在文件夹中筛选/排除指定后缀文件
grep "word" -r ./
-r --include="*.v"
-r --include=*.{php,html}
过滤以,v
过滤以php/html为后缀的文本
-r --exclude=.txt
除了以txt为后缀的其他都查
-r --exclude-dir=.svn
除了svn文件夹内部的其他都查
-r --exclude-from=filelist
将要排除的文件写入一个filelist中
-r --exclude-from=filelist
将要排除的文件写入一个filelist中
6.反向过滤——用于筛选
默认是选出符合条件的行(筛选),反向操作就是选出不符合条件的行(-v,排除)
在杀进程的时候可以用到,如 ps -aux可以查到当前进程,有很多
使用管道符筛选出bash进程后,使用-v反向操作,再进一步排除掉由于grep指令产生的进程
另外如果知道一个grep打印会有很多,可以通过-c先看看会输出多少行
7.只输出匹配内容——用于统计
统计word出现次数:
-o结合数字匹配,筛选字段
8. 筛选出包含字段的文件
-l 筛选出包含字段的文件
-L 筛选出不包含字段的文件
9.正则匹配
^ : 锚定行的开始 如:'^grep’匹配所有以grep开头的行。
$ : 锚定行的结束 如:'grep$'匹配所有以grep结尾的行。
. : 匹配一个非换行符的字符 如:'gr.p’匹配gr后接一个任意字符,然后是p。
* : 匹配零个或多个先前字符 如:"hel*"匹配he后一个或多个l的行。记得加转移反斜线
上述两个一起用,即.*代表任意字符。'he.*
匹配一个指定范围内的字符,如"[Ggjrep’匹配Grep和grep,[0-9],[A-Za-z0-9]。
device[^A-Za-z0-9]:匹配一个不在指定范围内的字符,如:device[A-Za-z0-9]"[^A-FH-Zrep’匹配不包含A-F和H-Z的一个字母开头,紧跟rep的行。
< : 锚定单词的开始,如:"<grep’匹配包含以grep开头的单词的行。
> : 锚定单词的结束,如’grep>'匹配包含以grep结尾的单词的行。nx{m}#重复字符x,m次,如:'o2V匹配包含2个o的行。
{}: 重复字符x,至少m次,如:'my5,匹配至少有5个o的行。x{m,} x{m,n} 重复字符x,至少m次,不多于n次
\
\w: 匹配文字和数字字符,也就是[A-Za-z0-9]
\w的反置形式,是\W,匹配一个或多个非单词字符,如点号句号等。
单词锁定符,如:"\bis\b"只匹配对应单词。
10.管道和grep
11.grep和wc/uniq/sort的合用
wc用于统计单词数量或者行数量
-c:字母数
-w:单词数
-l:行数
- grep和wc合用,统计出现特定word的数量和行数
- 和uniq、sort合用如下
- sort可以排序,加-u选项可以去重
- uniq只能邻近去重