shell正则表达式新手入门教程

 更新时间:2024年11月01日 08:27:09   作者:带带琪宝  
在Shell脚本编程中,正则表达式是处理文本字符串不可或缺的工具,通过特殊字符如"^"、"$"、"."、"*"和"[]"等,可以实现从匹配行首尾、任意字符到指定范围内字符的复杂文本处理,需要的朋友可以参考下

前言

shell中总是会需要对文本字符串做各种各样的剪切拼接等操作,除了 basename 和 dirname 这种简单的函数外,还可以用正则表达式,定义模糊匹配的筛选规则

一、常规匹配

管道操作就是一种匹配方式,如用来查找用户:

[root@hadoop-master ~]# cat /etc/passwd | grep zxd
zxd:x:1001:1001::/home/zxd:/bin/bash

二、特殊字符

正则的强大就是因为可以使用各种各样的特殊字符 

^

匹配一行的开头,如 ^ab 表示以 ab 开头的所有行

[root@hadoop-master etc]# cat /etc/passwd | grep ^h
halt:x:7:0:halt:/sbin:/sbin/halt
hue:x:1000:1000::/home/hue:/bin/bash

$

匹配一行的结束,如 zxd$ 表示以 zxd 结尾的所有行

[root@hadoop-master etc]# cat /etc/passwd | grep t$
halt:x:7:0:halt:/sbin:/sbin/halt

一起使用 ^abc$,会匹配 abc,使用^$会匹配空行,加上-n参数会显示行号

[root@hadoop-master daily_archive_func]# cat daily_archive_func.sh | grep -n ^$
2:
9:
18:
22:
25:
29:
33:
41:
43:
44:
45:
46:

.

匹配一个任意的字符,如a..b会显示包含a某某b的所有行

[root@hadoop-master etc]# cat passwd | grep -n r..t
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

*

不单独使用,与上一个字符连用,表示匹配上一个字符连续出现0次,1次或多次,如ro*t会匹配rt、rot、root、rooot。。。等所在的所有行

.*:任意字符出现任意次,空字符串也能匹配到

[root@hadoop-master etc]# cat passwd | grep -n ^z.*bash$
23:zxd:x:1001:1001::/home/zxd:/bin/bash

字符区间

[ ] 表示匹配某个范围内的一个字符

[6,8]------匹配 6 或者 8

[0-9]------匹配一个 0-9 的数字

[0-9]*------匹配任意长度的数字字符串

[a-z]------匹配一个 a-z 之间的字符

[a-z]* ------匹配任意长度的字母字符串

[a-c, e-f]-匹配 a-c 或者 e-f 之间的任意字符

 \

\表示转义,并不会单独使用。由于所有特殊字符都有其特定匹配模式,而我们刚好想匹配特殊字符本身时,就会碰到困难。

此时我们就要 将转义字符和特殊字符连用,再加上单引号引起来,来表示特殊字符本身,例如一个对于脚本,找出所有包含 '$' 的行

三、示例

正则匹配手机号

注意点:shell中的 -E 表示支持扩展的正则表达式,本身是不支持部分规则的,如{}

总结

到此这篇关于shell正则表达式新手入门的文章就介绍到这了,更多相关shell正则表达式入门内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • shell脚本编程之数组

    shell脚本编程之数组

    数组就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标
    2016-01-01
  • Shell脚本实现非法IP登陆自动报警

    Shell脚本实现非法IP登陆自动报警

    这篇文章主要介绍了Shell脚本实现非法IP登陆自动报警,本文实现非指定IP段登录服务器时使用邮件报警,需要的朋友可以参考下
    2015-02-02
  • 查看linux服务器上jdk的安装路径方法

    查看linux服务器上jdk的安装路径方法

    这篇文章主要介绍了查看linux服务器上jdk的安装路径方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Bash Shell中Shift用法分享

    Bash Shell中Shift用法分享

    这篇文章主要介绍了Bash Shell中Shift的使用方法,需要的朋友可以参考下
    2013-08-08
  • Shell脚本批量清除Nginx缓存

    Shell脚本批量清除Nginx缓存

    这篇文章主要介绍了Shell脚本批量清除Nginx缓存,本文直接给出实现代码和执行效果图,需要的朋友可以参考下
    2014-12-12
  • Linux查看系统配置信息的命令详解

    Linux查看系统配置信息的命令详解

    Linux操作系统由Linux内核和各种外围程序组成, Linux内核是一个特殊的软件程序,用于实现CPU和内存分配,进程调度、设备驱动等核心操作,本文给大家介绍了Linux查看系统配置信息的命令,需要的朋友可以参考下
    2024-04-04
  • linux shell常用循环与判断语句(for,while,until,if)使用方法

    linux shell常用循环与判断语句(for,while,until,if)使用方法

    这篇文章主要介绍了linux shell循环,判断介绍,以及实例使用方法,需要的朋友可以参考下
    2019-04-04
  • Shell编程之Shell变量学习总结

    Shell编程之Shell变量学习总结

    这篇文章主要介绍了Shell脚本编程中Shell变量的学习总结,需要的朋友可以参考下
    2014-03-03
  • Linux下Shell脚本中几种基本命令的替换区别

    Linux下Shell脚本中几种基本命令的替换区别

    最近因为工作需要,需要编写shell脚本。编写大量shell脚本时,累计了大量经验,也让自己开始迷糊几种函数输出调用的区别。后面和前辈们请教了一下这个问题,大致明白了区别。这里分享给大家,希望对大家能有所收获。下面来一起看看吧。
    2016-10-10
  • Ubuntu、Linux Mint一键安装Chrome浏览器的Shell脚本分享

    Ubuntu、Linux Mint一键安装Chrome浏览器的Shell脚本分享

    这篇文章主要介绍了Ubuntu、Linux Mint一键安装Chrome浏览器的Shell脚本分享,本文直接给出实现代码,需要的朋友可以参考下
    2015-03-03

最新评论