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
下一篇 2016-04-11

相关推荐

  • Linux文件和目录管理

    Linux目录和文件管理 Linux文件信息详述 文件数据存储在块中 文件元数据存储在inode中 文件名和其对应的inode号码存储在目录项中 数据块的概念: 文件在硬盘上的最小存储单位叫做扇区,1扇区=512字节,操作系统读取硬盘的时候不会一个一个读,这样太慢,会一次连续读多个扇区,即一个读取一个“块”,常见的 1块=八个扇区=4kB inode的概念:…

    Linux干货 2016-11-04
  • shell脚本编程的执行语句

    顺序执行     从上到下逐条执行命令,执行完所有命令及退出。 选择执行     (1)&&,||     &&:代表and,&&左侧为真右侧则执行     ||:代表or…

    Linux干货 2016-08-24
  • Linux文件查找之find命令

    前言:        Linux文件种类繁多,难免在维护Linux中会忘记文件的路径。所有在维护Linux中学好查找命令是非常必要的。     Linux查找命令有很多,比如 whereis,type,which,locate,find(重点)。  &nbsp…

    Linux干货 2015-06-15
  • Linux学习小结3

    1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。[root@node1 ~]# who -q | sed -n ‘1p’centos root fedora redhat mint2.取出最后登录到当前系统的用户的相关信息。[root@node1 ~]# who -a | tail -1min…

    Linux干货 2017-10-24
  • 关于大型网站技术演进的思考(一):存储的瓶颈(1)

    原文出处: 夏天的森林  前不久公司请来了位互联网界的技术大牛跟我们做了一次大型网站架构的培训,两天12个小时信息量非常大,知识的广度和难度也非常大,培训完后我很难完整理出全部听到的知识,今天我换了个思路是回味这次培训,这个思路就是通过本人目前的经验和技术水平来思考下大型网站技术演进的过程。 首先我们要思考一个问题,什么样的网站才是大型网…

    Linux干货 2015-02-26
  • 20161014作业

    2016/10/14作业: ##操作类: 1. 设置自己的终端提示符,要求字符终端登录时: a> 需要带颜色 b> 需要显示当前执行到了第几条命令 c> 显示当前登录终端,主机名和当前时间 2、使用shutdown命令于5分钟后重启自己的PC机 3. 学习man,学会使用a> ls递归列出/usr目录下所有文件, b> 列出目录…

    Linux干货 2016-10-20