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 -- ...
随机推荐
- redis过期key监听事件
目录 redis安装 docker拉取 启动 redis 配置 命令监听 问题 程序监听 具体监听类 效果 总结 redis常用语缓存操作,但是redis功能不仅仅于此.今天我们来看看redis的ke ...
- 翻译:《实用的Python编程》04_04_Defining_exceptions
目录 | 上一节 (4.3 特殊方法) | 下一节 (5 对象模型) 4.4 定义异常 用户可以通过类实现自定义异常: class NetworkError(Exception): pass **异常 ...
- WPF 基础 - 图片与 base64
1. base64 转图片 将 base64 转成 byte[] 将 byte[] 作为内存流保存到一个 BitmapImage 实例的流的源 把 BitmapImage 作为目标图片的 Source ...
- P1739_表达式括号匹配(JAVA语言)
思路:刚开始想用stack,遇到'('就push,遇到')'就pop,后来发现其实我们只需要用到栈里'('的个数,所以我们用一个变量统计'('的个数就好啦~ 题目描述 假设一个表达式有英文字母(小写) ...
- 系统编程-信号-信号发送kill、raise、alarm
信号发送 kill 和 raise函数 kill函数参数详解: 实验1 raise和kill 的使用 #include <stdio.h> #include <signal.h> ...
- 2021精选 Java面试题附答案(一)
1.什么是Java Java是一门面向对象的高级编程语言,不仅吸收了C++语言的各种优点,比如继承了C++语言面向对象的技术核心.还摒弃了C++里难以理解的多继承.指针等概念,,同时也增加了垃圾回收机 ...
- $@ 与 $* 差在哪?-- Shell十三问<第九问>
$@ 与 $* 差在哪?-- Shell十三问<第九问> 要说 $@ 与 $* 之前,需得先从 shell script 的 positional parameter 谈起.我们都已经知道 ...
- 敏捷史话(十三):我被 Facebook 解雇了——Kent Beck
2011年,Kent Beck 加入了 Facebook .那时候的他已年过半百,几十年的经验让他自认为非常了解软件行业.在 Facebook 的新手训练营期间,Kent 开始意识到,Facebook ...
- [Fundamental of Power Electronics]-PART II-7. 交流等效电路建模-7.5 状态空间平均 7.6 本章小结
7.5 状态空间平均 现有文献中已经出现了很多变换器交流建模的方法,其中包括电流注入法,电路平均和状态空间平均法.尽管某种特定方法的支持者可能更愿意使用该方法去建模,但所有方法的最终结果都是等效的.并 ...
- 如何获取canvas当前的缩放值
项目中一直有一个问题困扰着我,我们的画布可以缩放平移旋转,支持拖拽生成图形,生成手写笔迹,如果用户选择的线条粗细为5像素,那么即使画布缩放过绘制出的线条粗细也应该是视觉上的5px,所以再绘制时赋值给c ...