Linux扩展正则表达式

1. 扩展正则表达式

1.1 +(加号)

+ 表示前一个字符出现1次或1次以上

1.1.1 理解+

要求:取出文件内容连续出现的小写字母

[[email protected] /oldboy]# egrep ‘0+‘ oldboy.txt       grep -E===egrep

my qq is 49000448

not 4900000448.

[[email protected]-lnb /oldboy]# grep -E ‘0+‘ oldboy.txt

my qq is 49000448

not 4900000448.

[[email protected]-lnb /oldboy]# grep ‘0\+‘ oldboy.txt

my qq is 49000448

not 4900000448.

[[email protected]-50 oldboy]# egrep ‘[a-z]+‘ oldboy.txt    

可以用[a-z]+显示单词 内容过多此处不粘贴

[[email protected]-50 oldboy]# egrep ‘[a-z]+‘ oldboy.txt -o  -o显示查找过程

am

oldboy

##[]与+连用 +会认为[]里面的是一个整体 所以显示为字符组

1.1.2 加+和不加+的区别

[[email protected] /oldboy]# egrep ‘0+‘ oldboy.txt -o    加+号 连在一起的会一起显示

000

00000

[[email protected]-lnb /oldboy]# egrep ‘0‘ oldboy.txt -o     不加+号 单独显示

0

0

0

0

0

0

0

0

1.1 | 或者

1.1.1 理解 |

[[email protected] 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.1.2 | 的用法

排除文件中的#和空行

/etc/ssh/sshd_config 排除文件中的#和空行

[[email protected] ssh]# egrep -v ‘^$|#‘ sshd_config

1.1 () (小括号)

()表示一个整体 反向引用/后向引用

sed -r 使用扩展正则

思路:把你想要的内容保护起来 ()

sed 在 ‘s###g‘ 后两个井号之间使用  \数字 引用

[[email protected] oldboy]# egrep ‘oldb(o|e)y‘ oldboy.txt            此处表示查找oldboy和oldbey

[[email protected]-50 oldboy]# echo 123456|sed -r ‘s#(.*)#\1#g‘

123456

[[email protected]-50 oldboy]# echo 123456|sed -r ‘s#(.*)#<\1>#g‘

<123456>

将123456  修改为12<34>56

[[email protected]-50 oldboy]# echo 123456|sed -r ‘s#(34)#<\1>#g‘

12<34>56

点表示任意一个字符,\2表示第二个括号。

[[email protected] ~]# echo 123456|sed -r ‘s#(.).(..).(.)#\2#g‘

34

1.1 {}(花括号)

前一个字符至少连续出现了n次 最多连续出现了m次

1.1.1 大括号的不同方法

0{3,6}   >=3 <=6

0{3}     ==3

0{3,}    >=3

0{,6}    >=0 <=6

1.1.2 应用方法

[[email protected] oldboy]# egrep ‘[0-9X]{18}‘ id.txt     此处表示{}前面的字符出现了18次

[[email protected]-lnb /oldboy]# egrep ‘0{3,4}‘ oldboy.txt 表示0出现了最少出现3次最多出现4次

my qq is 49000448

not 4900000448.

[[email protected]-lnb /oldboy]# egrep ‘0{3}‘ oldboy.txt   表示0出现了3次

my qq is 49000448

not 4900000448.

1.1.3 {} 的用法

取出文件中的身份证号码

[[email protected] /oldboy]# cat id.txt

金 211324198705244720

万 500224197105168312

任 1231231231oldboy

任 3oldboy

任 lidao97303136098

任 alex2197303136098

任 350182197303oldgir

吕 211282199209113038

孔 150000198309176071

邹 371001197412221284

贺 130185200011215926

杜 362522198711278101

向 14052219961008852X

[[email protected]-lnb /oldboy]# egrep ‘[0-9X]{18}‘ id.txt   

#表示0到9和x 一共出现了18次 这样查找不精确  因为单独一个数字出现18次 也可以筛选出来

金 211324198705244720

万 500224197105168312

吕 211282199209113038

孔 150000198309176071

邹 371001197412221284

贺 130185200011215926

杜 362522198711278101

   XXXXXXXXXXXXXXXXXX

向 14052219961008852X

[[email protected]-lnb /oldboy]# egrep ‘[0-9]{17}[0-9X]‘ id.txt   精确查找 但是还不是最精确的

金 211324198705244720

万 500224197105168312

吕 211282199209113038

孔 150000198309176071

邹 371001197412221284

贺 130185200011215926

杜 362522198711278101

向 14052219961008852X

1.1 ? (问号)

?前一个符号连续出现0次或1次 有或没有

?表示的信息0次或1次表示的内容和{0,1}其实是一样的

第1章 正则表达式坑

1.1 坑1 grep ‘0*‘

会把文件内容都显示出来

0*    0次       没有            grep会把文件内容都显示出来

0次以上   0 00000000000

[[email protected] ~]# 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!

[[email protected] ~]# grep -o "0*" clsn.txt

000

00000

1.2 坑2 [oldboy]

[oldboy]查找的内容是o l d b o y  而不是oldboy整体

[[email protected] /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!

[[email protected]-lnb /oldboy]# grep -o ‘[oldboy]‘   oldboy.txt  显示查找过程

o

l

d

b

o

y

l

l

b

1.3 坑3 [^#^$]  [^$]  [^#$]

[]中 $ . 没有特殊含义 类似于\转义字符

[[email protected] /oldboy]# cat oldboy.txt               查看文件内容

I am oldboy teacher!

I teach linux.

I like badminton ball ,billiard ball and chinese chess!

+++++\\\\\\!!!!$$$$$$^^^

####!!!^^^^^[email protected]@@@@####

[[email protected]-lnb /oldboy]# grep ‘[^#^$]‘  oldboy.txt    此处表示排除#^$  相当于去除了特殊含义

I am oldboy teacher!

I teach linux.

I like badminton ball ,billiard ball and chinese chess!

+++++\\\\\\!!!!$$$$$$^^^

####!!!^^^^^[email protected]@@@@####

[[email protected]-lnb /oldboy]# grep ‘\.$‘  oldboy.txt       此处表示查找以.结尾的

I teach linux.

not 4900000448.

[[email protected]-lnb /oldboy]# grep ‘[.]$‘  oldboy.txt      此处也表示查找以.结尾的 与\意思相同

I teach linux.

not 4900000448.

1.4 坑4 grep -v与[^a-z]

[^a-z]          排除按字符 某个字符 某些字符

grep -v [a-z]     排除按行

[[email protected] /oldboy]# grep ‘[^a-z]‘  oldboy.txt

[[email protected]-lnb /oldboy]# grep -v ‘[a-z]‘  oldboy.txt

原文地址:https://www.cnblogs.com/wenrulaogou/p/9403371.html

时间: 2024-10-13 05:00:33

Linux扩展正则表达式的相关文章

Linux扩展正则表达式及sed生产环境用法

1.取本机ip地址 [[email protected] ~]# ifconfig eth1      Link encap:Ethernet  HWaddr 00:0C:29:35:DD:AB           inet addr:10.1.253.95  Bcast:10.1.255.255  Mask:255.255.0.0           inet6 addr: fe80::20c:29ff:fe35:ddab/64 Scope:Link           UP BROADCAS

Linux下元字符、正则表达式、扩展正则表达式应用

Linux下通配符  常用来搜索文件ls,find 符号        意义 *           代表任意长度的任意字符 ?           代表任意单个字符 []          代表指定范围内的任意单个字符 [-]         如[a-z]代表a-z内的任意单个字符 [^]         指定范围外的任意单个字符 Linux下元字符 #     注释符号,常使用在脚本当中 \     转义字符,将"元字符或通配符"还原成一般字符, |     管道,可以将管道左边的

linux之grep基本及扩展正则表达式应用作业

Linux 培训8月27日作业 在8月27日的课程上,主要学习了关于grep命令的使用及其在基本正则表达式和扩展正则表达式下各元字符的具体应用. 1.总结本此课程中所涉及命令的使用方法及相关示例展示 本次课程所涉及的命令主要的有 grep它是一个文本过滤工具,它的作用是文本搜索工具,根据用户指定的"模式(pattern)"逐行去搜索目标文本,打印匹配到的行 这里面提到的模式很重要,模式按个人理解想理解它就需要先了解什么是元字符. 元字符:是一组特殊符号,但它们并不表示它们原来的字符意义

Linux常用命令—egrep及扩展正则表达式

扩展正则表达式 扩展正则表达式命令:egrep 不支持正则表达式但是快速:fgrep 字符匹配: .: []: [^]: 次数匹配: *: ?: +:匹配其前面的字符至少一次 {m}:精确匹配 {m,n}无需反斜线: 位置锚定: ^: $: \<或者\b: \>或者\b: 分组: ():分组 \1,\2,\3,...... 或者 |:或(a|b) 例: C|cat=C或者cat (C|c)at=Cat或者cat 懒惰限定符 *?         重复任意次,但尽可能少重复 +?        

linux 笔记--扩展正则表达式,bash脚本—变量,条件判断,算术运算

正则表达式:有两类,一:basic regexp  二:extended(扩展正则表达式)  他们的部分元字符不一样,意义也不相同 grep:使用基本正则表达式或定义的模式中过滤文本的命令,-E;使用扩展正则表达式  -A 数字:不仅显示匹配到的行,还显示后面几行  -B 数字:不仅显示匹配到的行,还显示前几行  -C 数字:不仅显示匹配到的行,还显示前后个几行 扩展正则表达式: 其中 . [] [^] * ^ $ \< \>与grep是相同的, ? 与 \?:意思相同,可以不写\  +:其前

linux基础篇-12,grep正则表达式与扩展正则表达式

################################################ 基本正则表达式:grep 使用正则表达式定义的模式来过滤文本 grep -i :不区分大小写 --color -v:显示没被匹配的任意行 -o:只显示被匹配的字符串 -E 扩展的正是表达式 =egerp -A#:#为数字 -B#: -C#: [[email protected] testcp]# grep -o 'root' /etc/passwd --color root root root ro

linux下egrep文件内容搜索工具及扩展正则表达式详解

egrep命令: 根据模式(文本字符和扩展正则表达式的元字符组合而成之匹配条件)搜索文本, 并将符合模式的文本行显示出来. 格式:egrep [选项] 匹配条件 文本名称 egrep 等于 grep -E 选项:  -i:  忽略大小写 -v: 显示没有被模式匹配到的行 -o:只显示被模式匹配到的字符串 --color: 搜索出来文件高亮度显示 -A: 匹配指定行的下几行 -B: 匹配指定行的上几行 -C: 匹配指定行的上下几行 正则表达式:Regular Expression, 简称REGEX

linux下正则表达式

正则表达式 1.用du -sh /* 查看根下所有目录占用的内存是多少 2.lsof -i :22 查看22端口 3.清空文件,cat /dev/null>access_log清空一个文件 4.如果在oldboy/ett目录下在创建一个目录,那么/oldbot/ett的硬链接数是多少,为什么? 2个,因为子目录下的..是父目录的硬链接 5检测一个命令是否是内置命令:type 命令名称 Linux的多用户多任务介绍: 1.用户的身份是用UID(useridentify)和GID(groupiden

2015年8月27日课程作业(文件权限管理及grep正则和扩展正则表达式)-JY1506402-19+liuhui880818

学习内容:文件权限管理及grep正则和扩展正则表达式 系统环境:CentOS 6.7/7 x86_64 一.作业(练习)内容: 1.总结本此课程中所涉及命令的使用方法及相关示例展示: 2.总结基本正则表达式及扩展正则表达式 3.显示/etc/passwd文件中以bash结尾的行 4.显示/etc/passwd文件中的两位数或三位数 5.显示`netstat -tan`命令结果中以'LISTEN'后跟0个.1个或者多个空白字符结尾的行 6.添加用户bash.testbash.basher以及nol