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正则表达式入门内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Linux中查看服务器内存/CPU/网络占用情况的命令

    Linux中查看服务器内存/CPU/网络占用情况的命令

    这篇文章主要为大家整理了一些Linux中查看服务器内存、CPU和网络占用情况的命令,文中的示例代码简洁易懂,需要的小伙伴可以参考一下
    2023-08-08
  • 用shell批量修改文件名的方法

    用shell批量修改文件名的方法

    这篇文章主要为大家介绍了shell对文件夹中全部文件的名称加以批量替换、修改的方法,文中的示例代码讲解详细,对大家的学习或工作有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • linux几个没用但是有趣的命令(收藏)

    linux几个没用但是有趣的命令(收藏)

    今天给大家分享一些linux几个没用但是有趣的命令,非常不错,喜欢的朋友快快收藏吧
    2021-11-11
  • Linux文件传输利器SCP命令使用详解与实战技巧

    Linux文件传输利器SCP命令使用详解与实战技巧

    scp凭借其简单、安全、跨平台的特点,成为Linux文件传输的首选工具,通过灵活使用参数和组合命令,可以应对大多数传输场景,这篇文章给大家介绍Linux文件传输利器SCP命令使用详解与实战技巧,感兴趣的朋友一起看看吧
    2025-05-05
  • Linux中rpm命令用法详解

    Linux中rpm命令用法详解

    rpm命令是用于在基于RPM包管理系统的Linux发行版中安装、查询、升级和删除软件包的命令行工具,本文讲给大家详细的介绍一下Linux rpm命令的使用方法,感兴趣的同学跟着小编一起来看看吧
    2023-08-08
  • 一天一个shell命令 linux文本系列-file命令用法

    一天一个shell命令 linux文本系列-file命令用法

    这篇文章主要介绍了一天一个shell命令 linux文本系列-file命令用法,需要的朋友可以参考下
    2016-06-06
  • Linux Shell脚本实现文件备份功能

    Linux Shell脚本实现文件备份功能

    在现代运维与开发工作中,数据安全是生命线,无论是个人笔记、项目源码还是生产数据库,一旦丢失都可能造成不可逆的损失,Linux Shell 脚本作为系统管理的瑞士军刀,天然适合承担自动化备份任务,本文将带你从零构建一个功能完备、稳定可靠的备份脚本,需要的朋友可以参考下
    2026-03-03
  • shell中if条件判断的实现

    shell中if条件判断的实现

    本文主要介绍了shell中if条件判断的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • 详解Linux查找目录下的按时间过滤的文件

    详解Linux查找目录下的按时间过滤的文件

    这篇文章主要介绍了Linux查找目录下的按时间过滤的文件 ,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • Linux Shell中判断进程是否存在的代码

    Linux Shell中判断进程是否存在的代码

    有时候我们需要在linux中判断进程是否存在,然后再执行相应的操作,这里简单的分享下,方便需要的朋友
    2013-01-01

最新评论