【shell】正则表达式
当一个文件或命令输出中抽取或过滤文本时,可以使用正则表达式(RE),正则表达式是一些特殊或很不特殊的字符串模式的集合。
在Linux中grep、awk、sed均可解释正则
1.基本元字符集及其定义
| ^ | 只匹配行首 |
| $ | 只匹配行尾 |
| * | 一个单字符后紧跟*,匹配0个或多个此单字符 |
| [] | 匹配[]内字符。可以使一个单字符,也可以是字符序列。可以使用-代替[]内字符序列范围,如用[1-3]代替[123] |
| \ | 用来屏蔽一个元字符的特殊含义。\可以失去它应有的意义 |
| . | 匹配任意单字符 |
| pattern\{\n} | 用来匹配前面pattern出现次数。n为次数 |
| pattern\{n,\}m | 含义同上,但次数最少为n |
| pattern\{n,m\} | 含义同上,但次数在n到m之间 |
tips:特殊的匹配
ip地址的匹配:[root@localhost test]# grep '[0-9]\{1,3\}[.][0-9]\{1,3\}[.][0-9]\{1,3\}[.][0-9]\{1,3\}' file01.txt
2.详细案例解释说明
现在有file01.txt文件内容如下:
Rolling In the Deep -- Adele
滑向深处
9999999999999999
There's a fire starting in my heart,
我心中燃起了火焰
Reaching a fever pitch and it's bringing me out the dark
那温度驱走了黑暗
Finally, I can see you crystal clear.
我终于看得清你
Go ahead and sell me out and I'll lay your ship bare.
放弃自己的全部赤裸的留在你的心中
See how I leave, with every piece of you
我会一片一片把你剥离我的记忆
Don't underestimate the things that I will do.
不要以为我真的不会这么做
There's a fire starting in my heart,
心中燃起了火焰
1.^匹配行首
说明:匹配以Th开头的行
[root@localhost test]# grep ^Th file01.txt

2.$匹配行尾
说明:匹配以dark结尾的行
[root@localhost test]# grep dark$ file01.txt

3.*匹配0个或单个字符
说明:匹配you出现的行
[root@localhost test]# grep you* file01.txt 
3.一些其他的grep命令操作
3.1 搜索特定字符串"and"
n为行号
[root@localhost test]# grep -n 'and' file01.txt
3.2 搜寻不包含特定字符串"and"
[root@localhost test]# grep -vn 'and' file01.txt
3.3 搜索任意大小写"there"这个字符串
[root@localhost test]# grep -in 'there' file01.txt
3.4 利用括号[]来搜索集合字符
搜索fb与ia组合开头的单词
[root@localhost test]# grep -n '[fb][ia]re' file01.txt
3.5 显示行尾为点的行
[root@localhost test]# grep -n '\.$' file01.txt
3.6 显示第二行与第三行数据
[root@localhost test]# cat -An file01.txt |head -n 3|tail -n 2
3.7 显示空白行
[root@localhost test]# grep -n '^$' file01.txt
3.8 找出含数字的行
[root@localhost test]# grep -n '[0-9][0-9]*' file01.txt
【shell】正则表达式的更多相关文章
- linux shell 正则表达式(BREs,EREs,PREs)差异比较
linux shell 正则表达式(BREs,EREs,PREs)差异比较 则表达式:在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符 串的单个字符串.在很多文本编辑器或其他工具里 ...
- linux shell 正则表达式(BREs,EREs,PREs)的比较
原文 : linux shell 正则表达式(BREs,EREs,PREs)差异比较 在使用 linux shell的实用程序,如awk,grep,sed等,正则表达式必不可少,他们的区别是什么 ...
- 文本处理三剑客与shell正则表达式
文本处理三剑客 提到对于文本的处理上,除了vim这个强大的编辑器之外,还有使用命令的形式去处理你要处理的文本,而不需要手动打开文本再去编辑.这样做的好处是能够以shell命令的形式将编辑和处理文本的工 ...
- shell(shell函数、shell正则表达式)
本章内容 shell函数 shell正则表达式 1.shell函数 linux shell 可以用户定义函数,然后在shell脚本中可以随便调用. 格式: funname () { CMD #函数体 ...
- Shell 正则表达式详解
Shell 正则表达式 什么是正则表达式? 正则表达式在每种语言中都会有,功能就是匹配符合你预期要求的字符串. 为什么要学正则表达式? 在企业工作中,我们每天做的linux运维工作中,时刻都会面对大量 ...
- 我们一起来学Shell - 正则表达式
文章目录 什么是正则表达式 正则表达式元字符 正则表达式应用举例 POSIX 方括号表达式 POSIX 字符集列表: 我们一起来学Shell - 初识shell 我们一起来学Shell - shell ...
- [Shell]正则表达式与通配符
----------------------------------------------------------------------------------------- 正则表达式与通配符: ...
- Python/Shell 正则表达式与运用
正则表达式用的地方是很多的.比如字符串处理过程中.最近遇到记录一下. 1. 比如在shell中 #!/bin/bash str="date:2017-11-28 os:centos blac ...
- Shell正则表达式和文本处理工具
作业一:整理正则表达式博客 一.什么是正则 正则就是用一些具有特殊含义的符号组合而成(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 通配符是由shell解释得. ...
- shell 正则表达式与文件名匹配
1) . : 匹配任意单ASCII 字符,可以为字母,或为数字. 2) 举例: ..XC..匹配deXC1t.23XCdf 等,.w..w..w.匹配rwxrw-rw- 行首以^匹配字符串或字符序列 ...
随机推荐
- js判断手机端和pc端
var browser = { versions: function() { var u = navigator.userAgent, app = navigator.appVersion; retu ...
- java中迭代器应用
本文将利用分析代码的方式,来学习一个集合类的内部结构,以及遍历集合的迭代模式的源码实现细节. 下面我们先简单讨论一个根接口Collection,然后分析一个抽象类AbstractList和它的对应It ...
- 微商营销实战技巧分享,轻松月入10W
如今能够说是移动互联时代.在这个时代,微信眼下能够说是当之无愧的移动应用,依据报道,眼下微信有7个多亿的用户,怪不得那么多人看到微商的时代,一大批人開始涌入微商,导致如今微信上卖产品都已经泛滥了,导致 ...
- [Android Pro] Android中IntentService的原理及使用
转载自:http://blog.csdn.net/ryantang03/article/details/8146154 在Android开发中,我 们或许会碰到这么一种业务需求,一项任务分成几个子任务 ...
- HTTP协议状态码详解(HTTP Status Code)(转)
原文链接:HTTP协议状态码详解(HTTP Status Code) 使用ASP.NET/PHP/JSP 或者javascript都会用到http的不同状态,一些常见的状态码为: 200 – 服务器成 ...
- SpringMVC in IDEA开发实践
按照上篇装过Tomcat之后. 本机本来装了IDEA和Maven. 参考以下这篇 https://my.oschina.net/gaussik/blog/385697 <使用IntelliJ I ...
- libevent的hello world程序
照着例子写了一个简单的libevent hello world代码: #include <sys/signal.h> #include <event.h> void signa ...
- 【Gson】简介 文档 基本使用 示例
简介 new TypeToken<List<Person>>() {}.getType() 1 1 1 new TypeToken<List<Person> ...
- C# 的三种序列化方法
序列化是将一个对象转换成字节流以达到将其长期保存在内存.数据库或文件中的处理过程.它的主要目的是保存对象的状态以便以后需要的时候使用.与其相反的过程叫做反序列化. 序列化一个对象 为了序列化一个对象, ...
- Python访问MySQL数据库
#encoding: utf-8 import mysql.connector __author__ = 'Administrator' config={'host':'127.0.0.1',#默认1 ...