Linux扩展正则表达式
1. 扩展正则表达式
1.1 +(加号)
+ 表示前一个字符出现1次或1次以上
1.1.1 理解+
要求:取出文件内容连续出现的小写字母
[root@oldboyedu50-lnb /oldboy]# egrep '0+' oldboy.txt grep -E===egrep my qq is 49000448 not 4900000448. [root@oldboyedu50-lnb /oldboy]# grep -E '0+' oldboy.txt my qq is 49000448 not 4900000448. [root@oldboyedu50-lnb /oldboy]# grep '0\+' oldboy.txt my qq is 49000448 not 4900000448. [root@oldboyedu-50 oldboy]# egrep '[a-z]+' oldboy.txt 可以用[a-z]+显示单词 内容过多此处不粘贴 [root@oldboyedu-50 oldboy]# egrep '[a-z]+' oldboy.txt -o -o显示查找过程 am oldboy ##[]与+连用 +会认为[]里面的是一个整体 所以显示为字符组
1.1.2 加+和不加+的区别
[root@oldboyedu50-lnb /oldboy]# egrep '0+' oldboy.txt -o 加+号 连在一起的会一起显示 000 00000 [root@oldboyedu50-lnb /oldboy]# egrep '0' oldboy.txt -o 不加+号 单独显示 0 0 0 0 0 0 0 0
1.2 | 或者
1.2.1 理解 |
[root@oldboyedu-50 oldboy]# egrep 'oldboy|linux' oldboy.txt 查找文件中oldboy或者linux的内容 I am oldboy teacher! I teach linux. my blog is http://oldboy.blog.51cto.com our size is http://blog.oldboyedu.com
1.2.2 | 的用法
排除文件中的#和空行
/etc/ssh/sshd_config 排除文件中的#和空行
[root@oldboyedu-50 ssh]# egrep -v '^$|#' sshd_config
1.3 () (小括号)
()表示一个整体 反向引用/后向引用
sed -r 使用扩展正则
思路:把你想要的内容保护起来 ()
sed 在 's###g' 后两个井号之间使用 \数字 引用
[root@oldboyedu-50 oldboy]# egrep 'oldb(o|e)y' oldboy.txt 此处表示查找oldboy和oldbey [root@oldboyedu-50 oldboy]# echo 123456|sed -r 's#(.*)#\1#g' 123456 [root@oldboyedu-50 oldboy]# echo 123456|sed -r 's#(.*)#<\1>#g' <123456> 将123456 修改为12<34>56 [root@oldboyedu-50 oldboy]# echo 123456|sed -r 's#(34)#<\1>#g' 12<34>56 点表示任意一个字符,\2表示第二个括号。 [root@znix ~]# echo 123456|sed -r 's#(.).(..).(.)#\2#g' 34
1.4 {}(花括号)
前一个字符至少连续出现了n次 最多连续出现了m次
1.4.1 大括号的不同方法
0{3,6} >=3 <=6 0{3} ==3 0{3,} >=3 0{,6} >=0 <=6
1.4.2 应用方法
[root@oldboyedu-50 oldboy]# egrep '[0-9X]{18}' id.txt 此处表示{}前面的字符出现了18次 [root@oldboyedu50-lnb /oldboy]# egrep '0{3,4}' oldboy.txt 表示0出现了最少出现3次最多出现4次 my qq is 49000448 not 4900000448. [root@oldboyedu50-lnb /oldboy]# egrep '0{3}' oldboy.txt 表示0出现了3次 my qq is 49000448 not 4900000448.
1.4.3 {} 的用法
取出文件中的身份证号码
[root@oldboyedu50-lnb /oldboy]# cat id.txt 金 211324198705244720 万 500224197105168312 任 1231231231oldboy 任 3oldboy 任 lidao97303136098 任 alex2197303136098 任 350182197303oldgir 吕 211282199209113038 孔 150000198309176071 邹 371001197412221284 贺 130185200011215926 杜 362522198711278101 向 14052219961008852X [root@oldboyedu50-lnb /oldboy]# egrep '[0-9X]{18}' id.txt #表示0到9和x 一共出现了18次 这样查找不精确 因为单独一个数字出现18次 也可以筛选出来 金 211324198705244720 万 500224197105168312 吕 211282199209113038 孔 150000198309176071 邹 371001197412221284 贺 130185200011215926 杜 362522198711278101 XXXXXXXXXXXXXXXXXX 向 14052219961008852X [root@oldboyedu50-lnb /oldboy]# egrep '[0-9]{17}[0-9X]' id.txt 精确查找 但是还不是最精确的 金 211324198705244720 万 500224197105168312 吕 211282199209113038 孔 150000198309176071 邹 371001197412221284 贺 130185200011215926 杜 362522198711278101 向 14052219961008852X
1.5 ? (问号)
?前一个符号连续出现0次或1次 有或没有
?表示的信息0次或1次表示的内容和{0,1}其实是一样的
第2章 正则表达式坑
2.1 坑1 grep '0*'
会把文件内容都显示出来
0* 0次 没有 grep会把文件内容都显示出来
0次以上 0 00000000000
[root@znix ~]# grep "0*" clsn.txt 坑1 grep '0*' 会把文件内容都显示出来 I am clsn teacher! I teach linux. I like badminton ball ,billiard ball and chinese chess! my blog is http://clsn.blog.51cto.com our site is http://www.etiantian.org my qq num is 49000448. not 4900000448. my god ,i am not oldbey,but clsn! [root@znix ~]# grep -o "0*" clsn.txt 000 00000
2.2 坑2 [oldboy]
[oldboy]查找的内容是o l d b o y 而不是oldboy整体
[root@oldboyedu50-lnb /oldboy]# grep '[oldboy]' oldboy.txt 在此处oldboy查找的内容是o l d b o y 而不是oldboy整体 I am oldboy teacher! I teach linux. I like badminton ball ,billiard ball and chinese chess! my blog is http://oldboy.blog.51cto.com our size is http://blog.oldboyedu.com my qq is 49000448 not 4900000448. my god ,i am not oldbey,but OLDBOY! [root@oldboyedu50-lnb /oldboy]# grep -o '[oldboy]' oldboy.txt 显示查找过程 o l d b o y l l b
2.3 坑3 [^#^$] [^$] [^#$]
[]中 $ . 没有特殊含义 类似于\转义字符
[root@oldboyedu50-lnb /oldboy]# cat oldboy.txt 查看文件内容 I am oldboy teacher! I teach linux. I like badminton ball ,billiard ball and chinese chess! +++++\\\\\\!!!!$$$$$$^^^ ####!!!^^^^^$$$$@@@@@#### [root@oldboyedu50-lnb /oldboy]# grep '[^#^$]' oldboy.txt 此处表示排除#^$ 相当于去除了特殊含义 I am oldboy teacher! I teach linux. I like badminton ball ,billiard ball and chinese chess! +++++\\\\\\!!!!$$$$$$^^^ ####!!!^^^^^$$$$@@@@@#### [root@oldboyedu50-lnb /oldboy]# grep '\.$' oldboy.txt 此处表示查找以.结尾的 I teach linux. not 4900000448. [root@oldboyedu50-lnb /oldboy]# grep '[.]$' oldboy.txt 此处也表示查找以.结尾的 与\意思相同 I teach linux. not 4900000448.
2.4 坑4 grep -v与[^a-z]
[^a-z] 排除按字符 某个字符 某些字符
grep -v [a-z] 排除按行
[root@oldboyedu50-lnb /oldboy]# grep '[^a-z]' oldboy.txt [root@oldboyedu50-lnb /oldboy]# grep -v '[a-z]' oldboy.txt
Linux扩展正则表达式的更多相关文章
- linux 扩展正则表达式 egrep
使用命令为grep -E 及egrep [root@MongoDB ~]# cat mike.log I am mike! I like linux. I like play football, te ...
- Linux通配符与基础正则表达式、扩展正则表达式
在Linux命令行操作或者SHELL编程中总是容易混淆一些特殊字符的使用,比如元字符‘*’号,作为通配符匹配文件名时表示0个到无穷多个任意字符.而作为正则表达式匹配字符串时,表示重复0个到无穷多个的前 ...
- linux正则表达式(基础正则表达式+扩展正则表达式)
正则表达式应用非常广泛,例如:php,Python,java等,但在linux中最常用的正则表达式的命令就是grep(egrep),sed,awk等,换句话 说linux三剑客要想能工作的更高效,就一 ...
- 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等,正则表达式必不可少,他们的区别是什么 ...
- linux备忘录-正则表达式与文件格式化处理
正则表达式 POSIX标准的符号 [:alnum:] -> 英文大小写字母和数字 0-9,A-Z,a-z [:alpha:] -> 英文大小写字母 A-Z,a-z [:blank:] -& ...
- bash基础——grep、基本正则表达式、扩展正则表达式、fgrep
grep grep全称:Globally search a Regular Expression and Print 全局搜索正则表达式 正规表达式本质上是一种"表示方法", 只要 ...
- Linux中正则表达式和字符串的查询、替换(tr/diff/wc/find)
目录 正则表达式 基本正则表达式 扩展正则表达式 grep tr diff du wc find 正则表达式 正则表达式,又称正规表示法.常规表示法( Regular Expression,在代码中常 ...
- 『忘了再学』Shell基础 — 25、扩展正则表达式
目录 1.扩展正则表达式说明 2.练习 (1)+和?练习 (2)|和()练习 3.注意(重点) 1.扩展正则表达式说明 熟悉正则表达式的童鞋应该很疑惑,在其他的语言中是没有扩展正则表达式说法的,在Sh ...
随机推荐
- java环境初级部署及项目搭建
一.网页地址 Java各版本下载地址: http://www.oracle.com/technetwork/cn/java/archive-139210-zhs.html Eclipse官方下载地址: ...
- Missing message for key "xxx" in bundle "(default bundle)" for locale zh_CN
参考文章http://programmerslounge.blogspot.com/2013/03/error-missing-message-for-key.html 错误的struts-confi ...
- Jmeter使用基础笔记-认识Jmeter
我在工作过程中接触Jmeter不算特别多,对Jmeter的使用也只是限于基础阶段,不过对付基本的一些需求我想足够使用了.有好几个朋友问我关于Jmeter的问题,在此我将我在工作过程中的使用心得和总结的 ...
- [bzoj4726][POI2017][Sabota?] (树形dp)
Description 某个公司有n个人, 上下级关系构成了一个有根树.其中有个人是叛徒(这个人不知道是谁).对于一个人, 如果他 下属(直接或者间接, 不包括他自己)中叛徒占的比例超过x,那么这个人 ...
- Python基础(三) 数据类型
我们首先要看的是几乎任何语言都具有的数据类型,包括字符串.整型.浮点型以及布尔类型.这些基本数据类型组成了基本控制块,从而创建的Python应用程序. 一.基本结构 1.数值: Python支持不同的 ...
- node-sass 安装失败
安装 npm install 时偶尔遇到报错:没有安装python或node-sass 安装失败的问题,百度之后发现是被墙了,但根据百度的方法换了淘宝镜像和用了vpn都安装失败, 原因可能是没有卸载之 ...
- mysql 查询出的数组为null怎么转换成0
mysql 查询出的数组为null怎么转换成0 IFNULL(b.dayPay,0) as yesterdayPay,
- jsp之${CTX}理解
jsp之${CTX} 根据自己的需要选择以下标签. <%@ taglib uri="/struts-tags" prefix="s"%> <% ...
- vim下多行注释与解注释
1.多行注释 (1)按esc进入命令行模式 (2)按下Ctrl+v,进入区块模式,并使用上下键选择需要注释的多行 (3)按下“I”(大写)键,进入插入模式 (4)输入注释符(“//”或“#”等) (5 ...
- TCP/IP协议1
1.分层 应用层 telent 远程登录,ftp 文件传输协议,smtp 简单邮件传送协议 snmp 简单网络管理协议 email 运输层 tcp(提供可靠的数据通信)和udp(数据报的分组从一台主 ...