首页 > 系统相关 >linux通配符、特殊符号、正则

linux通配符、特殊符号、正则

时间:2023-06-06 12:07:21浏览次数:53  
标签:字符 匹配 符号 含义 通配符 命令 linux txt 特殊符号

一. 通配符

 通配符(wildcard)是一种用于文件名匹配的特殊字符。它们可用于命令行中与文件名相关的操作,如列出、复制、移动或删除文件等。

 通配符可以匹配文件名中的一部分或全部内容,而不必完全指定文件名。例如,在Linux系统中,"*.txt"表示匹配所有以".txt"结尾的文件名,而不必知道文件名的前缀和具体名称。通配符使得通过模式匹配进行文件处理变得更加方便快捷。


常用的通配符有:

符号

含义

*

表示匹配任意个数(包括0个)的任意字符。例如,.txt可以匹配所有以.txt结尾的文件名。

?

匹配一个任意字符。例如,file?.txt可以匹配file1.txt、file2.txt等文件名,但不能匹配file11.txt,因为只能匹配一个字符。

[ ]

表示匹配任意一个在方括号中列出的字符,例如[abc] 代表匹配a、b、c 中任意一个。

[ - ]

中括号中有 减号,代表【在编码顺序内的所有字符】,例如[0-9] 代表0-9之间的连续的所有数字。

[^ ]

中括号内的第一个字符为指数符号“^”,那就代表反向选择,例如[^abc] 表示有一个字符,只要是非 “a、b、c”的其他字符就能接受。


二. 特殊符号

特殊符号是指在Linux系统中有特殊意义或功能的字符


常见的特殊符号:

管道符

符号

含义

|

将一个命令的输出传递给另一个命令作为输入。


重定向符号

符号

含义

>

重定向,替换

>>

追加重定向,追加

<

输入重定向

<<

输入重定向,一般用于一段文本或命令作为标准输入传递给某个命令或程序,例如使用时需要在命令后面加上 "<< EOF"(EOF 可以替换为任意不包含空格和特殊字符的字符串)来指示输入的开始,然后输入文本或命令,最后以输入的开始标记结尾,例如 "EOF"。


命令分隔符

符号

含义

;

分隔符,可以将多个命令写在同一行中,每个命令用分号隔开。当遇到分号时,前面的命令会执行完毕后,才会执行后面的命令。

&&

逻辑与,用于连接两个命令,只有在第一个命令成功执行后,才会执行第二个命令。如果第一个命令执行失败,则不会执行第二个命令。

||

逻辑或,逻辑或也用于连接两个命令,但只有在第一个命令执行失败后,才会执行第二个命令。如果第一个命令执行成功,则不会执行第二个命令。


后台运行符

符号

含义

&

用于在后台运行程序,释放终端控制权,将命令变为后台任务


反斜杠符号

符号

含义

\

用于转义特殊字符,使【特殊字符|通配符】失去特殊含义。

引号

符号

含义

""

双引号,双引号内变量可以被解析。

''

单引号,不会解析变量,内容为纯文本,变量符号$也会做文本处理。


注释符号

符号

含义

#

注释,后面内容不执行

目录符号

符号

含义

/

目录符号,以/ 开头的目录路径是绝对路径

~

用户家目录, root用户家目录默认为/root , 其他用户家目录默认在/home/xxx


反义符号

符号

含义

感叹号,逻辑运算中表示“非”

命令范围符号

符号

含义

(  )

在中间表示子shell的起始和结束

{ }

在 Linux 命令行和 shell 脚本中的作用是用于扩展一系列字符串或命令。{ } 内部可以包含逗号分隔的多个字符串或命令,它们会被展开成一个单独的字符串列表。例如: 字符串扩展echo file_{1..5} ;  命令扩展 touch file{1,3,9}.txt  ;  嵌套扩展 echo  test_{1,5,7{a..d}} 输出“test_1 test_5 test_7a test_7b test_7c test_7d”


三. 正则

 分类:基础正则、扩展正则

 正则与通配符的区别:正则表达式和通配符都是用于文本匹配的工具,但它们的设计和使用方式不同。

通配符


是一种简单的匹配模式,用于指定文件名或路径。在Linux/Unix系统中," * "(星号)代表任何字符序列,而?(问号)代表任何单个字符。例如,"*.txt"表示所有以.txt结尾的文件名,而file?.txt表示所有以file开头,并且后面只有一个字符的.txt文件。通配符只能匹配文件名,不能在文本中进行高级匹配。

正则表达式

是一种更为强大的文本匹配模式,可以对文本中的任意字符序列进行匹配。它由一组特殊字符和元字符组成,每个元字符都具有特殊含义。例如,.(点号)代表任何单个字符,*(星号)代表前一个字符的零个或多个实例,[](方括号)代表其中任意一个字符等等。通过结合这些元字符,可以实现更复杂的文本匹配任务。

正则使用注意事项:

1. 正确理解元字符的含义和用法。元字符是正则表达式中最重要的部分,它们具有特殊含义并能够匹配文本中的指定模式。**特别注意中文字符**,不说了都是泪。

2. 注意转义字符的作用。在正则表达式中,某些字符具有特殊含义,例如"*"、"|"等,如果要匹配这些字符本身,则需要使用反斜杠\进行转义。

3. 选择合适的正则表达式工具。在不同的操作系统和编程语言中,可能会使用不同的正则表达式引擎和语法规则。

4. 避免过度复杂的正则表达式。在编写正则表达式时,应该尽量避免使用过于复杂的模式,以免降低匹配效率和可读性。可以通过拆分正则表达式和使用多个简单的模式来实现更好的匹配效果。

5. 进行正则表达式测试和优化。在编写正则表达式之后,进行测试和优化,以确保其能够正确地匹配文本,并且具有足够的性能和可维护性。

6. 正则表达式按照行为单位处理,使用正则表达式进行多行匹配时,可以使用\n元字符来表示换行符,以区分不同行之间的文本。


基础正则

符号


含义

.

匹配任意单个字符。 wor.d

^

匹配行首,以...开头的行。^world

$

匹配行尾,以...结尾的行。world$  

^$

匹配空行

\

转义字符,可以将具有特殊含义的元字符转义为普通字符或者具有特殊意义,例如\^,不表示匹配行首。具有特殊意义:\n 、 \d 、 \s 、\w 、\b  等

*

匹配零个或多个前一个字符。必须更在字符后面,如果需要任意字符使用.*  。

.*

(点星.*)匹配任意长度字符,包括空行。.* 会尽可能多的匹配符合条件的内容,这种匹配方式被称为贪婪匹配。例如:当前有字符"aabb ab  ababab abc" , 当我们匹配a.*b的时候, 除了最后一个c 其他都符合匹配条件(即正则匹配到的内容是"aabb ab  ababab ab"),所以.* 在某些时候不能得到我们想要的结果。

[ ]

匹配括号中任意一个字符, [abc] 相当于是一个符号(每次匹配1个字符) 找出包含a或b或c

[^ ]

匹配不在方括号中的任何字符,[^abc]  非 ,相当于是一个符号(每次匹配1个字符) ,匹配非abc这几个字符以外的任意字符

{n,m}

连续n到m哥的前一个字符  , 若为\{n\} 则是连续n个的前一个字符 ,  若是 \{n,\} 则是连续n个以上的前一个字符

linux通配符、特殊符号、正则_正则


2. 扩展正则

符号

含义

+

匹配前一个字符的一个或多个字符

?

匹配前一个字符的零个或一个字符

|

或(or)的方式找出数个字符串

( )

匹配“群组”字符,与|类似,但是()的优点在于可以精确找出具有共同点的内容,例如需要找出abbbc\acccc\adddc ,  使用egrep  'a(bbb|ccc|ddd)c' 1 过滤可以准确的道具结果,使用egrep  'abbb|ccc|dddc' 1则会匹配到其他的内容

linux通配符、特殊符号、正则_正则_02

linux通配符、特殊符号、正则_通配符_03

( )+

匹配重复的多个群组,例如需要找出abbbc\acccc\adddc ,  使用egrep  'a(b|c|d)+c' 1与上述匹配“群组”字符效果更方便

linux通配符、特殊符号、正则_正则表达式_04

提醒: ! 和 > 在正则中不表示特殊符号,! 在正则中不表示 “非” ,如果需要查询这两个符号,可以使用"[ ]" , 例如 egrep   '[!>]'  test.txt   。 正则中排除字符不要使用!,例如 egrep  '[!a-d]'  test.txt 不支持的,需要使用 egrep '[^a-d]'  test.txt 。

来源:https://www.jianshu.com/p/8bea54b5b495      (也是我手敲的,不同平台)

标签:字符,匹配,符号,含义,通配符,命令,linux,txt,特殊符号
From: https://blog.51cto.com/u_14593742/6423449

相关文章

  • Linux中grep命令如何使用?其语法是什么?
    在Linux中,grep命令用于查找文件里符合条件的字符串或正则表达式,其语法为“grep选项模式文件”,是运维工程师常用的命令之一。接下来这篇文章为大家详细介绍一下Linuxgrep命令,快来看看吧。Linuxgrep命令用于查找文件里符合条件的字符串或正则表达式。grep指令用于......
  • 【转】600条最强Linux命令总结
    1.基本命令uname-m显示机器的处理器架构uname-r显示正在使用的内核版本hdparm-tT/dev/sda在磁盘上执行测试性读取操作系统信息arch显示机器的处理器架构dmidecode-q显示硬件系统部件-(SMBIOS/DMI)hdparm-i/dev/hda罗列一个磁盘的架构特性hdparm-tT/dev......
  • Asp.Net Core 程序部署到Linux(centos)生产环境(二):docker部署
    运行环境照例,先亮环境;软件的话我这里假设你已经批准好了.netcore运行环境,未配置可以看我的这篇[linux(centos)搭建.netcore运行环境]腾讯云centos:7.2cpu:1核2G内存1M带宽docker:18.06.1-ce安装docker安装其实很简单,就不重复说了,请查看纯洁大神这篇文章准备你的.netcoreweb程......
  • linux下go语言环境安装
    linux下go语言环境安装下载go包,选择合适的版本,(https://golang.google.cn/dl/)方式一,https://golang.google.cn/dl/选择合适的包,下载之后放到Linux下wgetwgethttps://dl.google.com/go/go1.16.5.linux-amd64.tar.gz解压到/usr/localtar-C/usr/local-zxvf*.tar.gz.添......
  • Linux中$符号意思
    1.命令变量$在linux里是用来给变量命令的,例如$JAVA_HOME,是指JAVA_HOME的环境变量。echo$JAVA_HOME可以在linux终端输出jdk的home目录。在Shell脚本中向脚本传递参数也会用到$,在使用变量时,要在变量名前加上前缀“$”.使用echo命令查看变量值。eg:echo$A 2.命令提示符......
  • SELinux 影响 bash: Permission denied
    目录适用范围问题概述问题原因解决方案参考文档适用范围LINUX问题概述在客户环境中,我们会经常使用工具或脚本执行命令。但是在有的环境中,同的工具,同样的脚本有的执行成功,有的执行失败。在工具中我们执行"ps-ef|grepmysqld"查看进程的命令!在测试的时候却告诉没有权限执......
  • Linux 中的主机、控制台和终端的起源
    如果你见过一些台式机,那么它们大多是这样的。键盘、显示器、机箱可以分开。哪怕机箱和使用者不在一个房间,只要线路连通,还是可以使用电脑的。在早期,机箱和键盘、显示器确实是分开的。你知道 Linux 中的主机、控制台和终端的起源么?在UNIX诞生之初,计算机的价格非常昂贵。......
  • Linux 中的主机、控制台和终端的起源
    如果你见过一些台式机,那么它们大多是这样的。键盘、显示器、机箱可以分开。哪怕机箱和使用者不在一个房间,只要线路连通,还是可以使用电脑的。在早期,机箱和键盘、显示器确实是分开的。你知道 Linux 中的主机、控制台和终端的起源么?在UNIX诞生之初,计算机的价格非常昂贵。......
  • Linux 中的主机、控制台和终端的起源
    如果你见过一些台式机,那么它们大多是这样的。键盘、显示器、机箱可以分开。哪怕机箱和使用者不在一个房间,只要线路连通,还是可以使用电脑的。在早期,机箱和键盘、显示器确实是分开的。你知道 Linux 中的主机、控制台和终端的起源么?在UNIX诞生之初,计算机的价格非常昂贵。......
  • Linux
    Liunx你在追光的时候,光也在向你靠近!虚拟机虚拟机的概念虚拟机(VirtualMachine)指通过软件模拟的具有完整硬件系统功能运行在一个完全隔离环境中的完整计算机系统,即一台虚拟出来的电脑允许任意操作且不影响本体电脑虚拟机的好处安装各种演示环境,便于制作各种例子保证主......