通配符正则表达式特殊符号总结通配符
概念
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小时内删除。
发表评论