bash通配符和正则表达式元字符部分归纳

Linux中有各种各样的字符,而且在不同环境和不同命令之下含义也不同

作为新手,决定先归纳学到的符号,方便后面学习厘清它们之间的关系。


glob 简化了的正则表达式

bash默认通配符:

? :只匹配一个任意字符;

* :匹配零个或多个任意字符;  

[^] :方括号及其中^中的取反

[abc]:匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);

如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。


grep基本正则表达式元字符:

.:  匹配任意单个字符;

[]: 匹配指定范围内的任意单个字符

[^]:匹配指定范围外的任意单个字符

*:匹配前面的字符任意次;

.*:任意长度的任意字符;

\?:匹配其前面的字符0或1次;即前面的可有可无;

\+:匹配其前面的字符至少1次;

\{m\}:匹配前面的字符m次;

\{m,n\}:匹配前面的字符至少m次,至多n次;

\{0,n\}:匹配前面的字符至多n次;

\{m,\}:匹配前面的字符至少m次;

^:行首锚定;用于模式的最左侧;

$:行尾锚定;用于模式的最右侧;

\< 或 \b:词首锚定;用于单词模式的左侧;

\> 或 \b:词尾锚定;用于单词模式的右侧;

\<PATTERN\>:匹配整个单词;

\(\):将一个或多个字符捆绑在一起,当作一个整体进行处理;


egrep及扩展的正则表达式

egrep = grep -E

扩展正则表达式的元字符:

字符匹配:

.

[]

[^]

*

?: 0或1次;

+:1次或多次;

{m}:匹配m次;

{m,n}:至少m,至多n次;

^

$

\<, \b

\>, \b

()

后向引用:\1, \2, …


根据以上归纳,需要区分的符号

glob和grep的*符号,前者直接任意字符,后者匹配前一个字符任意次数

grep和egrep的?,+,{m,n},(),前者需要将这些字符转义,后者不需要


附其它一些bash符号说明

子字符类

[:alpha:]

匹配当前归类中的大写和小写字母字符。例如,'[0-9]{3}[[:alpha:]]{2}' 匹配三个数字,后跟两个字母。

[:alnum:]

匹配当前归类中的数字、大写和小写字母字符。例如,'[[:alnum:]]+' 匹配含有一个或多个字母和数字的字符串。

[:digit:]

匹配当前归类中的数字。例如,'[[:digit:]-]+' 匹配含有一个或多个数字或横线的字符串。同样,'[^[:digit:]-]+' 匹配含有一个或多个不是数字或横线的字符的字符串。

[:lower:]

匹配当前归类中的小写字母字符。例如,'[[:lower:]]' 不匹配 A,因为 A 为大写。

[:space:]

匹配单个空格 (' ')。

[:upper:]

匹配当前归类中的大写字母字符。例如,'[[:upper:]ab]' 与以下其中一项匹配:任何大写字母、a 或 b。

[:whitespace:]

匹配一个空白字符,例如,空格、制表符、换页符和回车符。

[:ascii:]

匹配任何七位的 ASCII 字符(0 到 127 之间的顺序值)。

[:blank:]

匹配一个空白区或水平制表符。

[[:blank:]] 等效于 [ \t]。

[:cntrl:]

匹配顺序值小于 32 或字符值为 127 的 ASCII 字符(控制字符)。控制字符包括换行符、换页符、退格符,等等。

[:graph:]

匹配打印字符。

[[:graph:]] 等效于 [[:alnum:][:punct:]]。

[:print:]

匹配打印字符和空格。

[[:print:]] 等效于 [[:graph:][:whitespace:]]。

[:punct:]

匹配其中一个字符: !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~.

[:punct:] 子字符类不能包括当前归类中可用的非 ASCII 标点字符。

[:word:]

匹配当前归类中的字母、数字或下划线字符。

[[:word:]] 等效于 [[:alnum:]_]。

[:xdigit:]

匹配字符类 [0-9A-Fa-f] 中的字符。

#  注释说明

$ 变量符号

\ 转义字符 一般用在写很长的通配符上 我们可以把特殊字符或者通配符 转义成一般的字符

; 连续命令执行分割符号,例子 cp /etc /tmp ;ls  /tmp ;cd etc ;rm etc

''  反点号中间的先执行

/  目录符号,路径分割

& 把作业放到后台去执行

~ 用户的主文件夹

!逻辑运算上的非

原创文章,作者:Net18_木水,如若转载,请注明出处:http://www.178linux.com/14506

(2)
Net18_木水Net18_木水
上一篇 2016-04-11 11:44
下一篇 2016-04-11 11:49

相关推荐

  • 35个强大的UI设计教程

    下面是35个非常不错的UI设计的的教程及效果图,非常不错哦。不但教你如何做一些特效,同样教你如何做UI布局和界面设计。当然,他们风格迥异,也基本上都是Web页面上的。都非常不错。希望你喜欢。(点击下面的图片可以打开相关的教程) Old Paper Layout Professional Modern Web Layout Photography portfo…

    Linux干货 2015-04-01
  • shell编程if及find查找作业

    写一个脚本/root/bin/createuser.sh,实现如下功能:使用一个用户名做为参数,如果指定参数的用户存在,就显示其存在,否则添加之;显示添加的用户的id号等信息 [root@www sh.log]# cat createuser.sh  #!/bin/bash #author #使用一个用户名作为参数,如…

    Linux干货 2016-08-16
  • Linux防火墙之基本原理

    本系列文章主要讲述Linux防火墙的基本原理和基础使用方法: 1.什么是防火墙: 当我们把计算机连入互联网与其他计算机进行通信时,这无疑也将自己的信息暴露了,那就意味着可能会有一些心怀不轨的人会利用这些信息来攻击自己的主机,尤其是作为一台服务器向互联网用户提供服务时,就迫切需要一种隔离和保护机制,来隔离外部网络,达到保护自我的目的。而这种隔离机制就叫做防火墙…

    Linux干货 2016-12-27
  • Bash的I/O重定向及管道

    每周更新的博客定时派送啦,本周与大家一起分享的是重定向和管道 首先了解一下 读入数据:Input 输出数据:Output 我们来看一下重定向:  >  覆盖重定向 上面图中 > 文件名     创建空文件 touch 文件名 创建空文件 这两种方法都可以创建一个新的文…

    2017-07-21
  • 1019作业

    1019作业 柴震 软连接 硬连接 软连接和硬链接的区别 属性与定义: 硬链接:新建的文件是已经存在的文件的一个别名,所以创建时链接数递增;而且当原文件删除时,新建的链接文件仍然可以使用,因其直接对应于数据块。 软链接:也称为符号链接。新建的链接文件以“路径”的形式来表示另一个文件,其大小为指向的路径字符串的长度,不增加或减少目标文件in…

    Linux干货 2016-10-19
  • 用户、组及其管理

    用户和组管理    Linux是一个多用户、多任务的操作系统。多用户、多任务就是可以在系统上建立多个用户,多个用户可以在同一时间内登录同一台主机的系统执行不同的任务,而互不影响。例如某台linux服务器上有4个用户,分别是root、www、ftp和mysql,在同一时间内root用户可能在管理维护系统,www用户可能在修改自己的程序和操作…

    Linux干货 2016-08-04