通配符正则表达式特殊符号总结通配符
概念
bash操作环境下的功能。
*  代表0个到任意多个字符
?  代表⼀定有⼀个任意字符
[]  代表⼀定有[]中的⼀个字符。如g[a,b,c]d表⽰gad、gbd、gcd
[-]  代表⼀定有编码顺序内的所有字符。如g[0-9]d表⽰g0d、g1d、、g9d
[^]  代表反向选择。如g[^abc]d表⽰gdd、ged、、gzd、g0d、
特殊字符
#      注释
\        转义符号
|      管道符
;        命令分隔符,多条命令使⽤
~      ⽤户主⽂件夹
$      变量前导符
&      作业控制,将作业变为后台
!        逻辑符--⾮
/        ⽬录符号
>,>>  数据流重定向,输出导向
<,<<  数据流重定向,输⼊导向
''  单引号,不具备变量置换的功能
""  双引号,具备变量置换的功能
``      ⾥⾯为先执⾏的命令,等效于$()
()  中间为⼦shell的起始与结束
{}   中间为命令块的组合
   重要:
    ① !在[]中不是特殊字符。
      表⽰反向选择:
        [!a-z]        错误
        [^a-z]        正确
  ② $()与``的区别
      命令结果
      echo \$\$                            $$
      echo `echo \\$\\$`              $$              ``中两个\表转义
      echo $(echo \$\$)              $$              $()中⼀个\表转义
正则表达式
概念
  正则表达式是通过⼀些特殊字符的排列,⽤以查、替换、删除⼀⾏或多⾏⽂字字符串。简单地说,就是⽤在字符串的处理上⾯的⼀项“表达式”
语系对正则表达式的影响
  不同语系下,可能会得到不同的结果。
  如[a-z]在gb2312下得到,C语系下得到
  ⼀般使⽤LANG=C语系
  以下符号可以避免编码问题
    特殊符号代表意义
    [:alnum:]          代表英⽂⼤⼩写字符及数字,即 0-9, A-Z, a-z
    [:alpha:]            代表任何英⽂⼤⼩写字符,即 A-Z, a-z
    [:digit:]              代表数字⽽已,即 0-9
    [:lower:]            代表⼩写字符,即 a-z
    [:upper:]            代表⼤写字符,即 A-Z
    [:blank:]            代表空格键与 [Tab] 按键两者
    [:cntrl:]              代表键盘上⾯的控制按键,即包括 CR, LF, Tab, Del.. 等等
    [:graph:]            除了空格符 (空格键与 [Tab] 按键) 外的其他所有按键
    [:print:]              代表任何可以被打印出来的字符
    [:punct:]            代表标点符号 (punctuation symbol),即:" ' ? ! ; : # $
    [:space:]            任何会产⽣空⽩的字符,包括空格键, [Tab], CR 等等
    [:xdigit:]            代表 16 迚位的数字类型,因此包括: 0-9, A-F, a-f 的数字与字符
分类
依据不同的严谨程度分为基础正则表达式与扩展正则表达式
基础正则表达式的特殊字符
^word      word$      .                \              *              [list]
[n1-n2]    [^list]        [^n1-n2]  \{n\}          \{n,m\}    \{n,\}
^word      待查的字符串word在⾏⾸
出所有注释⾏
grep –n ‘^#’
出开头不是英⽂字母的⾏
grep –n ‘^[^[:alpha:]]’
word$      带查的字符串word在⾏尾
出!结尾的⾏
grep –n ‘\!$’
出空⽩⾏
grep –n ‘^$’
.        代表⼀定有任意⼀个字符
出包括g??d的字符串
grep –n ‘g..d’
\        转义字符,转义特殊字符
出⼩数点.结尾的⾏
grep –n ‘\.$’
*      重复0个到⽆穷多个的前⼀个字符
出包含o、oo、ooo、的⾏
grep –n ‘oo*’
出g开头和g结尾的所有⾏,当中任意字符
grep –n ‘g*g’   错误
grep –n ‘g.*g’   正确
出包含任意数字的⾏
grep –n ‘[:digit:][:digit:]*’
[list]          RE字符集合⾥⾯的任意⼀个字符
到a或d开头的任意⾏
grep –n ‘^[ad]’
[n1-n2]    当前语系下RE字符集合的字符范围⾥⾯的任意⼀个字符到a或b或c或d开头的任意⾏
grep –n ‘^[a-d]’
[^list]        ⾮RE字符集合
到不是a或d开头的任意⾏
grep –n ‘^[^ad]’
注:b、c开头的会被列出
[^n1-n2]            ⾮当前语系下RE字符集合的字符范围⾥⾯的任意⼀个字符到不是a或b或c或d开头的任意⾏
grep –n ‘^[^a-d]’
\{n\}          连续n个前⼀个RE字符
到go...od(100个o)
grep –n ‘go\{100\}d’
\{n,m\}    连续n到m个前⼀个RE字符
到go...od(2到5个o)
grep –n ‘go\{2,5\}d’
\{n,\}                  连续n个以上前⼀个RE字符
到go...od(5个o以上)
grep –n ‘go\{5,\}d’
扩展正则表达式的特殊字符
+      ?      |      ()      ()+
  注:grep只⽀持基础正则表达式,grep –E(写作egrep)⽀持扩展正则表达式        +      重复⼀个或⼀个以上的前⼀个RE字符
到god、good、d
egrep ‘go+d’
?      0个或1个前⼀个RE字符
到gd、god
egrep ‘go?d’
|      ⽤或的⽅式出多个字符串(⽆规律)
到glad、black、cache
egrep ‘glad|black|cache’
()      ⽤组字符串出多个字符串(有特定规律)
到glad、good、geed
egrep ‘g(la|oo|ee)d’
()+    到有1个或多个重复组字符串
到AxyzxyzxyzC
egrep ‘A(xyz)+C’
通配符和正则表达式的区别
  通配符是系统命令使⽤,⼀般⽤来匹配⽂件名或者什么的⽤在系统命令中;
  正则表达式是操作字符串,以⾏为单位来匹配字符串使⽤的。正则匹配中配到到带单引号
符号通配符正则表达式
*0个到任意多个字符0个到任意多个前⼀个字
?⼀定有⼀个任意字符0个或1个前⼀个字符

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。