shell通配符(元字符)

shell中的通配符(元字符),表示不是本意,由shell来解析

常用的元字符有:

*  匹配任意多个字符

?  匹配任意一个字符

[]  匹配括号中任意一个字符

  转义符,让元字符回归本意

{}  集合 touch file{1..5}  mkdir -p  /home/{333/{a,b},444}

()  在子shell中执行,不影响当前shell,(umask 077;touch file01)

正则表达式元字符  由各种执行模式匹配操作的程序来解析,比如vi、grep、sed、awk,在大多数程序中,正则表达式都被置于两个正斜杠之间。它将匹配被查找到行中任何位置出现的相同模式,在正则表达式中,元字符式最重要的概念。

 vim示例:

cat  a.txt  

tom   anatomy    tomatos   tomorrow

:1,$  s/tom/David/g  #如tom、anatomy、tomatos、tomorrow中的“tom”都被替换了,而Tom却没有替换

:1,$  s/<[Tt]om>/David/g  #<>表示匹配一个单词,单词前后可以有符号,但是不能出现任何单词,只有tom被替换,其余都未替换。

基本正则表达式元字符

元字符      功能          示例

^        行首定位符      ^love  

$        行尾定位符      love$

.        匹配单个字符      l..e

*        匹配前导符0次到多次  ab*love

.*        匹配任意多个字符    

[]        匹配指定范围内的一个字符  [lL]ove

[ - ]       匹配指定范围内的一个字符  [a-z]ove

[^]       匹配不在指定组内的字符    [^a-z]ove

        用来转义元字符      love.

<        词首定位符        <love

>        词尾定位符        love>

(..)      匹配稍后使用的字符的标签  :3,9 s/(.*)/#1/

x{m}      字符x重复出现m次     0{3}

x{m,}      字符x重复出现m次以上    0{2,}

x{m,n}      字符x重复出现m到n次     1{3,5}

扩展正则表达式元字符

+      匹配一个或多个前导字符    [a-z]+ove

?      匹配0个或1个前导字符     lo?ve

a|b      匹配a或b          love|hate

()       组字符          love(able|rs)ov+  ov+     (ov)+

(...)(...)12  标签匹配字符        (love)able1er  

x{m}    字符x重复m次        o{5}

x{m,}     字符x重复至少m次      o{5,}

x{m,n}     字符x重复m到n次      o{5,10}

*、?、+、{}不能单独存在,为别人而存在。

Love*         0到多次

Love?         0到1次

Love+         1到多次

Love{2}         2次

Lo(ve)*        ve匹配0到多次

Lo(ve)?        ve匹配0到1次

Lo(ve)+        ve匹配1到多次

Lo(ve){2}        ve匹配2次

原文地址:https://www.cnblogs.com/xiaofeng666/p/12233567.html