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

相关推荐

  • 【招聘】北京/互联网/运维工程师/7-15K/双休,五险一金

    岗位职责:   1、负责服务器的规划、调试优化、日常监控、故障处理、数据备份、日志分析等工作;   2、参与运维流程制定,确保任何突发情况都能高效响应;  3、负责服务器部署,对服务器构架和网络进行优化和改进;  4、负责运维相关数据的收集、分析和总结;  5、负责技术运维相关的文档、手册…

    Linux干货 2016-04-05
  • IO重定向

    I/O(IN Out)重定向(本来位置被改到别处位置):            指的改变默认输入输出的位置    程序:数据+指令  IO          可用于输入的设备:文件     &nbsp…

    Linux干货 2017-04-03
  • 人志建,则无敌—磁盘、LVM2和简单脚本练习

    马哥网络班21期-第七周博客 1、创建一个10G分区,并格式为ext4文件系统;  disk /dev/sdb         Command (m for help): n    &nbs…

    Linux干货 2016-08-19
  • 文本编辑器—sed

    一、sed介绍 sed 一种流式编辑器。一个流式编辑器通常对来自输入流(一个文件或者是管道的输入)的文本进行转换处理。在某些方面类似支持脚本编辑的编辑器,sed在多输入情况下只开放一个通道工作,因此更加效率。sed与其他编辑器最大的区别在于,能对管道输入的文本进行过滤处理。 二、sed工作机制 sed保持两个数据缓冲区:主要活动的模式空间,以及辅助性的保持空…

    Linux干货 2016-08-12
  • 马哥教育网络班21期-第七周课程练习

    1、创建一个10G分区,并格式为ext4文件系统;    (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;    (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳; [root@localhost ~…

    Linux干货 2016-08-29
  • shell-语句总结

    shell脚本语法总结 过程式编程语言: 顺序执行 选择执行 循环执行 shell默认是顺序执行,如果有判断或循环语句则执行判断或循环。 条件判断 if     单分支         if 判断条件:then  &nb…

    Linux干货 2016-08-21