Shel正则表达式

Shell正则表达式

正则表达式普通常用的元字符

.    匹配除了换行符以外的任意单个字符
*    前导字符出现0次或连续多次
.*    任意长度字符    ab.*
^    行首(以...开头)    ^root
$    行尾(以...结尾)    bash$
^$    空行
[]    匹配括号里任意单个字符或一组单个字符      [abc]
[^]    匹配不包含括号里任一单个字符或一组单个字符      [^abc]
^[]    匹配以括号里任意单个字符或一组单个字符开头      ^[abc]
\^[\^]    匹配不以括号里任意单个字符或一组单个字符开头    \^[^abc]
< 词首定位符
> 词尾定位符
[root@linux /]# grep "^root" /etc/passwd  #查询以root开头的行
root:x:0:0:root:/root:/bin/bash 

[root@linux /]# grep "t$" /etc/passwd  # 匹配以t结尾的行
halt:x:7:0:halt:/sbin:/sbin/halt

[root@linux /]# grep 'ro*t' /etc/passwd    #匹配ro t中间的多次字符
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

[root@linux /]# grep 'r..t' /etc/passwd  ## 2点,匹配两个字符的内容
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

[root@linux /]# grep '[Rr]oot' /etc/passwd  # 匹配R或者r的一个字符
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

[root@linux /]# grep '[a-z]oot' /etc/passwd   #匹配小写a到z的一个字符
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

[root@linux /]# grep [^root] /etc/passwd   #匹配非root的字符
adm:x:3:4:adm:/var/adm:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin


[root@linux /]# cat 0.txt 
<root>
/root/

[root@linux /]# grep "<root" 0.txt 
<root>

[root@linux /]# grep "root>" 0.txt 
<root>

[root@linux /]# grep "a\{1\}" 0.txt  #a出现2次的显示
aa123456
213456a

[root@linux /]# grep "a\{2,\}" 0.txt #a出现2次以上的显示
aa123456

[root@linux /]# grep "a\{2,6\}" 0.txt #a出现2到6次之间的显示
aa123456

扩展表达式Egrep

扩展类正则常用元字符

+ 匹配一个或多个字母
? 表示0-1个字符
() 找出组字符串
(ab|de)+ # 匹配一连串的(最少一个)abc或def,abc和def将匹配
[[:alpha:]] 代表所有字母不论大小写
[[:lower:]] 表示小写字母
[[:upper:]] 表示大写字母
[[:digit:]] 表示数字字符
[:digit:] 表示数字字符加小写字母
[root@linux /]# egrep "a+" 0.txt 
aa123456
213456a

[root@linux /]# cat 0.txt 
aa123456
213456a
45966bb
god
gd
[root@linux /]# egrep "go?d" 0.txt  查找god和gd这两个字符串
god
gd

[root@linux /]# cat 0.txt 
hello
hlllo
heeee
[root@linux /]# egrep 'h(ell|lll)o' 0.txt  #查找hello和hlllo这两个字符串
hello
hlllo

[root@linux /]# cat 0.txt 
abdd123
default
124585
[root@linux /]# egrep "(ab|de)+" 0.txt
abdd123
default

[root@linux /]# cat 0.txt 
abdd123
default
Adaca
[root@linux /]# egrep "[[:alpha:]]" 0.txt  #匹配所有的大小写字符
abdd123
default
Adaca

[root@linux /]# cat 0.txt 
abdd123
default
AABB
[root@linux /]# egrep "[[:lower:]]" 0.txt  #匹配小写字符
abdd123
default

[root@linux /]# cat 0.txt 
abdd123
default
AABB
[root@linux /]# egrep "[[:upper:]]" 0.txt  #匹配大写字符
AABB

[root@linux /]# cat 0.txt 
abdd123
default
AABB
[root@linux /]# egrep "[[:digit:]]" 0.txt   #匹配数字
abdd123

[root@linux /]# cat 0.txt 
abdd123
default
AABB
[root@linux /]# egrep "[[:digit:][:lower:]]" 0.txt  #匹配数字和小写字符
abdd123
default

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Shell基础

    Linux系统下常见的四种变量 1.自定义变量 自定义变量是由系统用户自己定义的变量吗,只在用户自己的Shell环境中有效,因此,也有人称为本地变量。在编写Sh...

    剧终
  • shell函数

    有两种格式可以用来在shell脚本中创建函数,第一种格式采用关键字function,后跟分配给该代码块的函数名 name 属性定义了赋予函数的唯一名称,脚本中定...

    剧终
  • Shell sed命令

    语法:sed 选项 's/搜索的内容/替换的内容/动作' 需要处理的文件 动作一般是打印p和全局替换g

    剧终
  • LeetCode 114. 二叉树展开为链表(递归)

    来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/flatten-binary-tree-to-link...

    Michael阿明
  • Linux系统是否被植入木马的排查流程梳理

    在日常繁琐的运维工作中,对linux服务器进行安全检查是一个非常重要的环节。今天,分享一下如何检查linux系统是否遭受了入侵? 一、是否入侵检查 1)检查系统...

    洗尽了浮华
  • BST & AVL 二分搜索树 & 平衡二叉树的实现原理

    本文完整的实现了基本的BST,由于注重的是逻辑和原理的实现,所以没有采用泛型。注意方法的访问修饰符。

    大学里的混子
  • leecode刷题(24)-- 翻转二叉树

    二叉树问题,我们首先要想到的使用递归的方式来解决,有了这个思路,处理这道问题就很简单了:先互换根节点的左右节点,然后递归地处理左子树,再递归地处理右子树,直到所...

    希希里之海
  • LeetCode 222. 完全二叉树的节点个数(二分查找)

    说明: 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底...

    Michael阿明
  • 【LeetCode】一文详解二叉树的三大遍历:前序、中序和后序(python和C++实现)

    深度学习技术前沿公众号博主
  • 每天一道剑指offer-二叉树的镜像

    今天的题目 每天的题目见github(看最新的日期): https://github.com/gzc426 具体的题目可以去牛客网对应专题去找。

    乔戈里

扫码关注云+社区

领取腾讯云代金券