您的位置:首页 > 运维架构 > Linux

linux下的通配符与正则表达式

2012-05-14 12:14 267 查看
// 载自 : 鸟哥私房菜

linux下主要通配符与特殊字符如下:

*         代表0个或多个字符(或数字)

?         代表一个字母 ---- 数字不可以吗? 可以

#         注释,常用在脚本中

\            转义字符,将特殊字符或者通配符还原成一般字符

|            分隔两个管道

;         连续命令分隔

~         用户的家目录

$            变量之前需要加的,变量替换值

&         将命令变成后台工作

!         逻辑意义上的非,not

/         路径分隔

>   >>   输出导向

'            单引号,其中的变量不具有置换功能

"            双引号,其中的变量具有置换功能,即:单引号较双引号严格

`            撇号,Tab键上面那个字符,两个 ` 之间的命令可以先执行

()           中间为子shell的起始与结束

[]      中间为字符组合

{}      中间为命令区块的组合

而正则表达式,可以分为基础正则表达式和扩展正则表达式

^            在行首搜索,grep -n '^abc' file.txt      在file.txt中搜索以abc开始的行

$            在行尾搜索,grep -n '^$' file.txt         搜索空行

.               点号,代表任意一个字符,必须有一个

\               反斜杠,去除特殊符号的特殊意义,grep -n \' file.txt 搜索‘

*               前一个字符重复0次或多次

\{n,m\}      前一个字符重复n - m 次,如果没有m,则代表无上限

[ ]              字符集合,---- [ ] 仅代表一个待搜索的字符,需要范围时[2-4,a-g]

grep -n 'g[lde]g' file.txt,搜索glg, gdg, geg

grep -n 'g[^lde]g' file.txt,搜索除glg, gdg, geg以外的其它模式,但两个g之间一定要有一个字符

这里要注意的是:

1、^字符是否在 [ ] 中,作用是不同的

2、*字符在正则表达式中的作用与其充当通配符时的作用不同

3、!(叹号)字符在正则表达式中并不是特殊字符

扩展正则表达式:

egrep 即 grep -E 的别名

+            前一个字符,重复1或多次,egrep -n 'go+gle' file.txt 搜索gogle, google, gooogle......

?            前一个字符,重复0或1次

|             用或的方式找出多个字符串, egrep -n 'abc|abd' file.txt 搜索abc或abd,---- |的两边没有空格

()            找出“用户组”字符串, egrep -n 'g(oo|la)d' file.txt 搜索good或glad
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息