首页 > 系统相关 >【Linux 基础】正则表达式 与 通配符 区别

【Linux 基础】正则表达式 与 通配符 区别

时间:2023-12-03 15:44:25浏览次数:42  
标签:字符 匹配 正则表达式 通配符 Linux 任意 元字符

简短不看版:

通配符和正则表达式比较

(1)通配符和正则表达式看起来有点像,不能混淆。可以简单的理解为通配符只有*,?,[],{}这4种,而正则表达式复杂多了。

(2)*在通配符和正则表达式中有其不一样的地方,在通配符中*可以匹配任意的0个或多个字符,而在正则表达式中他是重复之前的一个或者多个字符,不能独立使用的。比如通配符可以用*来匹配任意字符,而正则表达式不行,他只匹配任意长度的前面的字符。

(3)使用场景:通配符 是文件名。正则表达式 文本内容

(4) 使用命令 通配符 find rm ls cp  由shell解析; 正则表达式 vi grep sed awk

 

一、通配符介绍

1、1:Shell常见通配符:

通配符

含义

实例

*

匹配 0 或多个字符

a*b a与b之间可以有任意长度的任意字符, 也可以一个也没有, 如aabcb, axyzb, a012b, ab。

?

匹配任意一个字符

a?b a与b之间必须也只能有一个字符, 可以是任意字符, 如aab, abb, acb, a0b。

[list]

匹配 list 中的任意单一字符

a[xyz]b  a与b之间必须也只能有一个字符, 但只能是 x 或 y 或 z, 如: axb, ayb, azb。

[!list]或[^list]

匹配 除list 中的任意单一字符

a[!0-9]b a与b之间必须也只能有一个字符, 但不能是阿拉伯数字, 如axb, aab, a-b。

[c1-c2]

匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z]

a[0-9]b 0与9之间必须也只能有一个字符 如a0b, a1b... a9b。

[!c1-c2]或[^c1-c2]

匹配不在c1-c2的任意字符

a[!0-9]b 如acb adb

{string1,string2,...}

匹配 sring1 或 string2 (或更多)其一字符串

a{abc,xyz,123}b 列出aabcb,axyzb,a123b

1、2 shell Meta字符(元字符)

shell 除了有通配符之外,还有一系列自己的其他特殊字符。

字符

说明

IFS

由 <space> 或 <tab> 或 <enter> 三者之一组成(我们常用 space )

CR

由 <enter> 产生

=

设定变量

$

取变量值或取运算值

重定向 stdout

重定向 stdin

|

管道符号

&

重导向 file descriptor ,或将命令置于背景执行

( )

将其内的命令置于 nested subshell 执行,或用于运算或命令替换

{ }

将其内的命令置于 non-named function 中执行,或用在变量替换的界定范围

;

在前一个命令结束时,而忽略其返回值,继续执行下一个命令

&&

在前一个命令结束时,若返回值为 true,继续执行下一个命令

||

在前一个命令结束时,若返回值为 false,继续执行下一个命令

!

运算意义上的非(not)的意思

#

注释,常用在脚本中

\

转移字符,去除其后紧跟的元字符或通配符的特殊意义

 

1、3 转义字符

有时候,我们想让 通配符,或者元字符 变成普通字符,不需要使用它。那么这里我们就需要用到转义符了。 shell提供转义符有三种。

字符

说明

‘’(单引号)

硬转义,其内部所有的shell 元字符、通配符都会被关掉。

“”(双引号)

软转义,其内部只允许出现特定的shell 元字符:$用于参数替换 `(反单引号,esc键下面)用于命令替换

\(反斜杠)

又叫转义,去除其后紧跟的元字符或通配符的特殊意义

 

二、正则表达式

正则表达式是用来匹配字符串的,针对文件内容的文本过滤工具里,大都用到正则表达式,如vi,grep,awk,sed等。

另外,这篇文章只针对Linux下的文本过滤工具的正则表达式进行讨论,其他的一些编程语言,如C++(c regex,c++ regex,boost regex),java,python等都有自己的正则表达式库。

简单点来说,正则表达式是对一组正在处理的文本的描述。

 

转载自:https://www.cnblogs.com/rebrobot/p/15929285.html

标签:字符,匹配,正则表达式,通配符,Linux,任意,元字符
From: https://www.cnblogs.com/FBsharl/p/17873277.html

相关文章

  • Linux和Windows时间不一致问题
    问题描述装过双系统或者虚拟机装Linux的人都知道,Linux的时间和Windows往往是不同步的,在编写跨平台程序的时候特别是对时间敏感的代码就带来很大的困扰解决办法这个问题可以在Linux下解决先用命令查看时区timedatectl如果系统刚刚装好,没有设置好时区,有可能默认的是America/L......
  • linux/centos使用fail2ban实现计次登录失败封禁其ip
    问题背景使用命令 cat/var/log/secure 查询服务器登录记录,发现有ip在进行暴力破解所以使用fail2ban进行ip限制,如果登录失败五次,则永久封禁其ip。安装并配置fail2ban(来自ChatGPT)下面是一份完整的Fail2Ban安装和配置,用于监视SSH服务并在登录失败5次时永久封锁相关IP的配置。......
  • linux文件系统管理和磁盘管理
    环境centos7.9文件系统挂载与卸载在Linux中,文件系统是通过挂载到目录上来使用的。挂载文件系统就是把一个文件系统和一个目录联系起来,使得用户可以通过这个目录来访问文件系统中的内容。文件系统挂载可以使用mount命令来实现挂载目录,如把/dev/sda1文件系统挂载到/mnt/mydisk目......
  • Linux 分区
    1、磁盘寻址方式(MBR)若按照上述分区则linux/dev文件下的硬盘设备应该为:/dev/sda1/dev/sda2/dev/sda3/dev/sda5/dev/sda6/dev/sda7其中sda4不见了是因为它作为了扩展分区,其实也就是包括了sda5~sda7统称扩展分区。 例题:  2、GPT分区表原理    ......
  • Linux服务器账号多次输入错误密码后解锁
    pam_tally2模块用于对系统进行失败的ssh登录尝试后锁定用户帐户。此模块保留已尝试访问的计数和过多的失败尝试。 查看用户登录失败的信息pam_tally2-urootLoginFailuresLatestfailureFromroot812/3/23 13:18:19192.168.7.49注:Failures表示登录系统失败的次数......
  • Linux第14章学习笔记
    第十四章学习笔记mysql简介MySQL是一个开源数据库管理系统,由服务器和客户机组成。在将客户机连接到服务器后,用户可向服务器输入SQL命令,以便创建数据库,删除数据库,存储、组织和检索数据库中的数据。MySQL有广泛的应用。安装MySQL在Ubuntu中,使用命令sudoaptinstallmysql-serv......
  • 【Docker】Linux路由连接两个不同网段namespace,连接namespace与主机
    如果两个namespace处于不同的子网中,那么就不能通过bridge进行连接了,而是需要通过路由器进行三层转发。然而Linux并未像提供虚拟网桥一样也提供一个虚拟路由器设备,原因是Linux自身就具备有路由器功能。路由器的工作原理是这样的:路由器上有2到多个网络接口,每个网络接口处于不同的三层......
  • Linux命令(112)之tac
    linux命令之tac1.tac介绍linux命令tac是将文件内容反向输出,其与命令cat输出刚好相反2.tac用法tac[参数]filenametac参数参数说明--version显示版本信息--help显示帮助信息3.实例3.1.显示tac的版本信息命令:tac--version[root@rhel77~]#tac--versiontac(GNUcoreutils)......
  • Linux命令(111)之groupadd
    linux命令之groupadd1.groupadd介绍linux命令groupadd是用来创建新的用户组,用户组信息会被添加到系统文件(/etc/group)中。2.groupadd用法groupadd[参数]GroupNamegroupadd常用参数参数说明-g指定用户组的gid号-r创建系统工作组-f如果组已经存在则成功退出3.实例3.1.创建普......
  • Linux命令(110)之umask
    linux命令之umask1.umask介绍linux命令umask为linux内建命令,用于设置创建文件/目录时的权限掩码。默认umask值为偶数,创建文件时,直接相减;如果有奇数,创建文件时,对应结果要加一。另外,之所以文件用666去减,表示文件默认不能有执行权限(x);如果减得的结果中有执行权限(x),则需要将其加一。......