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

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

2014-03-04 14:30 281 查看
linux下主要通配符与特殊字符如下:

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

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

# 注释,常用在脚本中

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

| 分隔两个管道

; 连续命令分隔

~ 用户的家目录

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

& 将命令变成后台工作

! 逻辑意义上的非,not

/ 路径分隔

> >> 输出导向

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

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

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

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

[] 中间为字符组合

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

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

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

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

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

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

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

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

[ ] 字符集合,---- [ ] 仅代表一个待搜索的字符,需要范围时[2-4a-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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: