技术改变生活

博客园 首页 新随笔 联系 订阅 管理

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)+

(...)(...)\1\2  标签匹配字符        (love)able\1er  

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次

posted on 2020-01-25 23:04  小阿峰  阅读(722)  评论(0编辑  收藏  举报