正规表示法: 就是处理字串的方法,他是以行为单位来进行字串的处理行为,透过一些特殊符号的辅助,可以让使用者轻易的达到“搜寻/删除/取代”某特定字串的处理程序
通配符和正规表示法的区别:
通配符代表的是bash操作界面的一个功能,但正则表示法是一种字串处理的‘表示法’,只要工具程序支持这种表示法,那么该工具程序就可以用来作为正规表示法的字串处理之用
正规表示法:
基础正规表示法:简单的字串处理
延伸正规表示法:群组的字串处理
基础正规表示法:
[ ] : 利用中括号来搜寻集合字节 [a-zA-Z] [^0-9]
. : 小数点代表‘一定有一个任意字节’的意思。 g..d
^ : 代表行首定位符 ^[a-z] ^#
$ : 行尾定位符 the$ \.$ ^$
* : 星星号代表‘重复前一个字节,0到无穷多次’的意思,为组合形态。 ooo*
.* : 代表零个或多个任意字节 找出任意数字 [0-9]*
\{ m,n \} : 限定连续字符的范围{}, 就是限制一个范围区间内的重复字节数。 因为{ }的符号在shell中是有特殊意义的,因此,我们必须要使用跳脱字符\来让他失去意义才行。x\{m\} x 重复 m 次,x\{m,\} x 重复 至少m 次,x\{m,n\} x 重复 至少m 次,但不超过n次, go\{2,5\}g go\{2,\}g
\ ( root \ ) : 将root这个内容存储在“保留空间”,最大存储九个
\n : 通过\1 至\9 调用保留空间中的内容
查找包含以root:开头并以:root结尾的字串行
grep --color “\ ( root \ ) \ ( : \ ).*\2\1” /etc/passwd
扩展正则表达式:
{n,m} 等同于基本正则表达式
+ 表示前面出现过一次或多次,如tom+ --tom,tomm,tommm
? 前面的字符出现0次或者1次 如tom? --tom, to........
| 匹配逻辑或者,即匹配 | 前或后的字串
( ) 匹配正则集合
通配符:
[ ] 匹配列表内的任意字符,比如[abc],匹配a、b、c当中的一个字符 [^0-9] [a-z] [A-Z]
? 匹配任意一个字符
* 匹配0到无穷多个任意字符
扩展通配符:
?() 括号里面的值可以出现0次也可以1次
*() 括号里面的值可以出现任意次 0次或1次或多次
+() 括号里面的值可以出现1次或是多次
@() 括号里面的值可以只能出现1次
POSIX规范:
特殊表示法 代表意义
[:alnum:] 代表英文大小写及数字,亦即0-9,A-Z,a-z
[:alpha:] 代表任何英文大小写字节,亦即A-Z,a-z
[:blank:] 代表空白键与[Tab]按键两者
[:cntrl:] 代表键盘上面的控制按键,亦即包括CR,LF,Tab,Del....等等
[:digit:] 代表数字而已,亦即0-9
[:graph:] 除了空白字节(空白键与[Tab]按键)外的其他所有按键
[:lower:] 代表小写字节,亦即a-z
[:print:] 代表任何可以被列印出来的字节
[:punct:] 代表标点符号(punctuation symbol),亦即: '' ' ? !; : # $ ....
[:upper:] 代表大写字节,亦即A-Z
[:space:] 任何会产生空白的字节,包括空白键,[Tab],CR 等等
[:xdigit:] 代表16进位的数字类型,因此包括:0-9,A-F,a-f的数字与字节
Note:
$( ) 代表命令 和`` 相等
$(( )) 运算
[ ] 判断功能 和test相等
{ } 大括号里写,或. 表示所有的值都被调用 mkdir {ouyang,bo}/{ouyang,bo} -p