linux工具grep的使用心得笔记
grep作为linux管理中常用的三大工具之一(grep、awk、sed),其功能十分强大,因此难以对其进行全面的使用介绍,因此本文只作为个人学习的笔记之用。
grep的用处:
在文本中匹配要查询的字符串,该字符串支持通配符和正则表达式,并且在文本中进行查找的时候是以行为单位的。给一个简单的用法:查询/etc/passwd文件中root字符串。

现有待查询的文本:

例子1:
grep 'from' -i -r -n
'from' 为需要查询的字符串;
-i 为在查询匹配时不区分字符串的大小写;
-r 为在查询时对指定的目录进行迭代查询(就是说会遍历目录下面的所有子目录中的文件),这里我们默认目录为当前路径‘.’ ;
-n 为返回查询结果时标注出匹配的字符串所在行的行号;

例子2:
grep -E 'import|from' -i -r -n
这里匹配的是‘import’或‘from’,一行中字符串只要匹配这两个中的一个即可。

例子3: (和第二个例子很相似)
grep -e 'import' -e 'from' -i -r -n
这里匹配的是‘import’或‘from’,一行中字符串只要匹配这两个中的一个即可。

例子4:

第4个例子可以和第3个、第二个例子比较来看,可以看到,每个文本中只匹配了一行。
例子5:
如果不加-w,则是:
例子6:
- 1 . 表示 任意一个字符
- 2 * 表示 零个或多个前面的字符
- 3 .* 表示0个或1个或多个任意字符,空行也包含在内
- 4 ? 表示0个或者1个前面的字符,使用的时候要\ 转义一下
- 5 + 表示一个或者多个+前面的字符
- 6 | 在正则表达式里面表示或者,能够写多个,是特殊符号,要使用转义 或者-E 或者 egrep
- 7 () 括号表示一个总体,{1,3}大括号表示一个范围,“ ? +(){} | ” 都是特殊符号,要使用必须转义或者-E 或者egrep,“. 和 *”不需要转义。[ ]也不需要转义。
grep '\(_\)\{2\}' -i -r -n

egrep '(_){2}' -i -r -n

需要注意的是()是需要转义的,而[ ]是不需要转义的。
grep 'impor\+t' -i -r -n
grep 'impo[a-zA-Z0-9]t' -i -r -n
[ ]是不需要转义的,()是需要转义的。
[ ]表示的是单一字符的匹配范围,()表示的是1个或多个字符的匹配范围。
a-z 表示所有小写英文字母;
A-Z 表示所有大写英文字母;
0-9 表示所有数字。
匹配字符中^代表行首,$代表行尾,"^s"代表位于行首的为"s"的字符,"s$"代表位于行尾的为"s"的字符,例子:
grep '^i' -i -r -n
grep 'b$' -i -r -n
grep '^i.*s$' -i -r -n
其中,“.*”表示任意长度的任意字符串。
grep 's\{2\}' -i -r -n
等价于:
grep '\(ss\)\{1\}' -i -r -n
等价于:
grep 'ss' -i -r -n

{ } 中可以指定多个重复的数值:
grep 's\{1,2\}' -i -r -n
grep 'imp\(or\|ro\)t' -i -r -n
可以在特殊字符“( )”的中间嵌套其他特殊字符。
grep -E 等价于egrep,相当于对需要转义的字符提前做了转义。
- 1 . 表示 任意一个字符
- 2 * 表示 零个或多个前面的字符
- 3 .* 表示0个或1个或多个任意字符,空行也包含在内
- 4 ? 表示0个或者1个前面的字符,使用的时候要\ 转义一下
- 5 + 表示一个或者多个+前面的字符
- 6 | 在正则表达式里面表示或者,能够写多个,是特殊符号,要使用转义 或者-E 或者 egrep
- 7 () 括号表示一个总体,{1,3}大括号表示一个范围,“ ? +(){} | ” 都是特殊符号,要使用必须转义或者-E 或者egrep,“. 和 *”不需要转义。[ ]也不需要转义。
- grep -n 显示符号要求的行,并显示行号
- grep -c 打印符合要求的行数
- grep -v 打印不符合要求的行,取反的意思
- grep -r 会把目录下的全部文件所有遍历;-r针对的是目录,若是不加-r只能针对文件
- grep -i 忽略大小写
- grep -A2 打印符合要求的行以及下面两行
- grep -B2 打印符合要求的行以及上面两行
- grep -C2 打印符合要求的行以及上下两行
- grep -w 匹配一个完整的单词
- grep -E 特殊符号脱意==egrep
- centos7中自带 --color显示颜色 ;
- grep 跟特殊符号的话,要用单引号
- grep --include 包含
- grep -l 只打印出含有匹配字符串的文件名,不输出具体匹配行的数据
参考:
http://www.noobyard.com/article/p-khsjayud-o.html
http://t.zoukankan.com/seaBiscuit0922-p-7744558.html
https://www.cnblogs.com/niguding/p/16573285.html
linux工具grep的使用心得笔记的更多相关文章
- Linux Shell脚本攻略 读书笔记
Linux Shell脚本攻略 读书笔记 这是一本小书,总共253页,但内容却很丰富,书中的示例小巧而实用,对我这样总是在shell门前徘徊的人来说真是如获至宝:最有价值的当属文本处理,对这块我单独整 ...
- Linux正则表达式grep与egrep
grep -io "http:/=[A-Z0-9]\{16\}" ./wsxf.txt >wsxf_urls.txt Linux正则表达式grep与egrep 正则表达式:它 ...
- Linux内存带宽的一些测试笔记
Linux内存带宽的一些测试笔记 首页 所有文章 2014年10月 GNU/Linux系统 2014-10-21 13:20 GNU/LINUX系统 内存带宽 1k 字 669 次 最近要测一下 ...
- 由一条Linux的grep命令说起
今天在开发的时候,看到同事使用了这样的一条linux命令 grep 'class YourClass' -rwi * |grep -v svn 想到了 grep命令的,几个参数. -r 明确要求搜索子 ...
- Linux工具参考篇(网摘)
Linux工具参考篇 原文出处:[Linux Tools Quick Tutorial] 1. gdb 调试利器 2. ldd 查看程序依赖库 3. lsof 一切皆文件 4. ps 进程查看器 5. ...
- 12个 Linux 中 grep 命令的超级用法实例
12个 Linux 中 grep 命令的超级用法实例 你是否遇到过需要在文件中查找一个特定的字符串或者样式,但是不知道从哪儿开始?那么,就请grep来帮你吧. grep是每个Linux发行版都预装的一 ...
- Linux内存带宽的一些测试笔记【转】
转自:https://blog.csdn.net/subfate/article/details/40343497 版权声明:本文为迟思堂主人李迟原创文章,版权所有.可随便任意使用(包括学习研究商用) ...
- linux中grep命令的使用
转载:http://blog.csdn.net/universsky/article/details/8866402 linux中grep命令的使用 grep (global search regul ...
- Linux工具[转]
ref: https://github.com/linw7/Skill-Tree/blob/master/Linux%E5%B7%A5%E5%85%B7.md Linux工具 Linux下还是有很多超 ...
- Linux三剑客grep、awk和sed
grep,sed 和 awk是Linux/Unix 系统中常用的三个文本处理的命令行工具,称为文本处理三剑客.本文将简要介绍这三个命令并给出基本用法. 管道 在介绍这两个命令之前,有必要介绍一下Uni ...
随机推荐
- 导出excel文件接口代码示例
导出excel文件接口代码示例 1.该导出接口,token不能通过请求头来传输,需要在get请求的参数中带出来2.验证token的方法除了在拦截器中统一拦截,针对get接口传参数的方式也需要单独在接口 ...
- list对象转数组
list对象转数组 package com.example.core.mydemo.json5; import org.apache.commons.collections4.CollectionUt ...
- maven项目创建默认目录结构
maven项目创建默认目录结构命令 项目文件夹未创建情况下 mvn \ archetype:generate \ -DgroupId=com.lits.parent \ -DartifactId=my ...
- GIS数据获取:气象数据免费下载网站
本文对目前主要的气象数据获取网站加以整理与介绍. 本文为"GIS数据获取整理"专栏中第二篇独立博客,因此本文全部标题均由"2"开头.本文对目前主要的气象 ...
- sql-labs通关笔记(上)
sql-labs通关笔记(上) 这里我们先只讲解less-1到less-9 联合查询注入 Less-1:GET -Error based.Single quotes -string 界面 在url中加 ...
- (sql语句试题练习及 参考答案解题思路+个人解题思路)
SQL字段说明及数据 ======================================================================= 一.部门表字段描述:dp_no 部 ...
- 【ClickHouse】6:clickhouse集群高可用
背景介绍: 有四台CentOS7服务器安装了ClickHouse HostName IP 安装程序 程序端口 shard(分片) replica(备份) centf8118.sharding1.db ...
- multipass中docker的使用及固定ip的配置
之前一直用WSL2,但是可能我高估了我笔记本的性能,每次开启后我的win11都闪得厉害. 公司给配发的联想昭阳 前两天实在受不了,把它重装了.才发现之前一直很抵触重装,结果重装完工作几乎没怎么受影响. ...
- P7687 题解
考场上数组开大了直接 MLE 了,气. 考虑把 A,B 两种服务分开算,一个边双连通分量内的点如过有一个有服务,那么整个联通分量就都有服务. 然后按边双联通分量缩点后原图变成树,一条边是关键路线当且仅 ...
- 在Java中如何通过优化代码来节省内存
Java 程序的一个常见问题是高内存使用率,这会导致性能问题甚至崩溃.因此,需要使用内存节省技术来优化 Java 代码并减少内存使用非常重要. 选择正确的数据类型: 使用适当大小的数据类型可以避免不必 ...