Linux中grep工具的使用
Grep
grep(Globel Search Regular Expression and Printing out the line)全面搜索正则表达式并把行打印出来,是一种强大的文本搜索工具,是一个对行进行操作的搜索工作,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix 的 grep 家族包括 grep 、egrep 、 fgrep 。egrep 表示扩展的 grep ,相比 grep 支持更多的元字符。grep -E 相当于 egrep 。fgrep 是 fast grep ,不支持元字符,但是搜索速度更快。grep 过滤的结果被送到屏幕,不影响原文件内容。
grep的用法:grep 选项 模式 文件
grep不加引号直接过滤字符串 ;grep在进行模式匹配的时候必须加引号,单引号和双引号都可以 ;grep在引用变量的时候必须加双引号
grep的选项
- -r : 递归搜索
- -v :反向选取
- -o : 只显示被模式匹配到的字符串,而不是整个行
- -i : 匹配时不区分大小写
- -A 5 : 显示匹配到的行时,显示后面的 5 行
- -B 5 : 显示匹配到的行时,前面的 5 行
- -C 5 : 显示匹配到的行时,前后的 5 行
- -E : 使用扩展的正则表达式
grep支持基本正则表达式: 基本正则表达式
grep -E 也支持扩展正则表达式:扩展正则表达式
grep 支持的字符
- [:digit:] : 所有数字,相当于 0-9 或者 \d
- [:lower:] :所有的小写字母
- [:upper:]:所有的大写字母
- [:alpha:] :所有的字母
- [:alnum:] :相当于[0-9a-zA-Z]
- [:space:] :空白字符,相当于 \s
- [:punct:] :所有标点符号
grep -E 或 egrep 支持的字符
- \s:匹配任何空白字符,包括空格、制表符、换页符等,与[ \f\n\r\t\v ] 等效
- \S:匹配任何非空白字符,与 [ ^\f\n\r\t\v ] 等效
- \w:匹配任何字类字符,包括下划线,与 [A-Za-z0-9_] 等效
- \W:匹配任何非单词字符,与[ ^A-Za-z0-9_] 等效
grep -P 支持的字符
- \d :数字字符匹配,等效于 [0-9]
举例
1、匹配 eg.text 中以 # 开头,且后面跟了至少一个空白字符,而后又跟了任意非空白字符的行
grep "^#[[:space:]]\{1,\}[^[:space:]]" eg.text
拆开 grep "^# [[:space:]] \{1,\} [^[:space:]]" eg.text
grep -E "^#\s\{1,\}\S" eg.text
拆开 grep -E "^# \s \{1,\} \S" eg.text
2、匹配 eg.text 中以 包含了 :一个数字: 的行
grep ":[[:digit:]]:" eg.text
拆开 grep ": [[:digit:]] :" eg.text
grep -P ":\d:" eg.text
拆开 grep -P ": \d :" eg.text
分组的例子
grep "l..e.*l..er" test.txt
grep "\(l..e\).*\1r" test.txt
匹配 1-255 的数字
grep -E "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>" num.txt
匹配Email地址:任意长度数字字母@任意长度数字字母
grep -E "^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$" email.txt
匹配手机号码,把手机号码是1[3|4|5|8]后面接9位数字的过滤出来
grep -E "\<1[3|4|5|8][0-9]{9}\>" tel.txt
Linux中grep工具的使用的更多相关文章
- linux中grep工具
正则表达式 以前我们用grep在一个文件中找出包含某些字符串的行,比如在头文件中找出一个宏定义.其实grep还可以找出符合某个模式(Pattern)的一类字符串.例如找出所有符合xxxxx@xxxx. ...
- 12个 Linux 中 grep 命令的超级用法实例
12个 Linux 中 grep 命令的超级用法实例 你是否遇到过需要在文件中查找一个特定的字符串或者样式,但是不知道从哪儿开始?那么,就请grep来帮你吧. grep是每个Linux发行版都预装的一 ...
- linux中grep命令的使用
转载:http://blog.csdn.net/universsky/article/details/8866402 linux中grep命令的使用 grep (global search regul ...
- [转帖]Linux中awk工具的使用
Linux中awk工具的使用 2018年10月09日 17:26:20 谢公子 阅读数 2170更多 分类专栏: linux系统安全 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权 ...
- Linux中grep和egrep命令详解
rep / egrep 语法: grep [-cinvABC] 'word' filename -c :打印符合要求的行数-i :忽略大小写-n :在输出符合要求的行的同时连同行号一起输出-v ...
- Linux中Grep常用的15个例子【转】
转自:https://www.aliyun.com/jiaocheng/1390860.html?spm=5176.100033.1.9.6a1e41e8Pdjynm 摘要:Grep命令主要用于从文件 ...
- linux中grep命令的用法
作为linux中最为常用的三大文本(awk,sed,grep)处理工具之一,掌握好其用法是很有必要的. 首先谈一下grep命令的常用格式为:[grep [选项] "模式" [ ...
- Linux中grep命令的12个实践例子
grep是每个Linux发行版都预装的一个强有力的文件模式搜索工具.无论何种原因,如果你的系统没有预装它的话,你可以很容易的通过系统的包管理器来安装它(Debian/Ubuntu系中的apt-get和 ...
- linux中grep/egrep的使用
grep也是linux中查找的一个利器,运维.程序员必掌握的 下面针对grep的参数进行说明: --color 重点标记匹配到项grep "a word" datafile -- ...
随机推荐
- C++的指针,引用,指向指针的引用和Java中的引用
#include <iostream> #include<algorithm> using namespace std; class Test { public: Test(i ...
- [个人总结]pip安装tensorboard太慢
在执行pip install语句的时候直接指定国内豆瓣的镜像源进行下载: pip install -i https://pypi.douban.com/simple 你想下载的包的名称 例如下载ten ...
- MYSQL-SQLSERVER获取某个数据库的表记录数
MYSQL: 1,可以使用MYSQL的系统表的记录数(亲测,有时候,会不准确,被坑了一把,如果还是想通过此方式实现查询表记录数,可以按照文章后的链接进行操作) use information_sche ...
- GTID介绍
从MySQL5.6开始增加GTID这个特性,Global Transaction ID,全局事务ID,用来强化主从数据库的一致性,故障恢复,以及容错能力,来替代传统的人工的主从复制: 有了GTID,在 ...
- 【odoo14】第三章、创建插件
现在我们已经有了开发环境并了解了如何管理实例及数据库,现在让我们来学习下如何创建插件模块. 本章内容如下: 创建和安装模块 完成manifest文件 组织模块文件结构 添加模型 添加菜单及视图 添加访 ...
- 运用arcgis将标签图片(栅格图)转换为shp矢量文件
最近在做图像分割校正,需要将ecognition分割好的shp文件做优化,但是如果直接对shp文件修改非常不友好,可以先对导出的tif标签图进行修改,然后将修改后的标签图转换为新的shp文件进行输出. ...
- WorkSkill 面试之 字节跳动一面
- BZOJ_2243 [SDOI2011]染色 【树链剖分+线段树】
一 题目 [SDOI2011]染色 二 分析 感觉树链剖分的这些题真的蛮考验码力的,自己的码力还是不够啊!o(╯□╰)o 还是比较常规的树链剖分,但是一定记得这里的线段树在查询的时候一定要考虑链于链相 ...
- python常用数据处理库
Python之所以能够成为数据分析与挖掘领域的最佳语言,是有其独特的优势的.因为他有很多这个领域相关的库可以用,而且很好用,比如Numpy.SciPy.Matploglib.Pandas.Scikit ...
- TypeError: 'list' object cannot be interpreted as an integer Python常见错误
想要通过索引来迭代一个list或者string的元素, 这需要调用 range() 函数.要记得返回len 值而不是返回这个列表.