Linux07--Shell程序设计03 通配符与正则表达式
通配符
通配符可用于代替字符。 通常地,星号“*”匹配0个或以上的字符,问号“?”匹配1个字符。
使用情况:
1.文件和目录
在CP/M、DOS、Microsoft Windows和类Unix操作系统中描述文件名(或路径)时,星号(*)匹配零个或多个任意字符、问号(?)匹配零个或不多于问号个数的任意字符。如:123??? 将匹配 1231 或 12313,但不会匹配 123991991。在Unix shell和Windows PowerShell中,方括号("["和"]")括起来的字符范围匹配在此范围内的任意字符,例如:[A-Za-z] 匹配任意的大小写字母。Unix shells 可以在用括号括起来的指定字符前加一个"!"来表示否定。
2.数据库
在SQL中,通配符可用于"LIKE"表达式中,百分号(%)匹配零个或多个字符,下划线(_)匹配单个字符。Transact-SQL中还支持使用方括号
("["和"]")来匹配列表集和字符范围,在前面加一个 ^ 表示否定,将匹配所有未在括号中指定的字符。在Microsoft Access中,通配符可用于"LIKE"表达式中,星号(*)匹配零个或多个字符,问号(?)匹配单个字符。
正则表达式
| RE 字符 | 意義與範例 |
| ^word | 待搜索的字串(word)在行首! |
|
范例:grep -n '^#' regular_express.txt ^在[]中表示反向选择,不再[]中表示定位在行首 |
|
| word$ | 待搜尋的字串(word)在行尾! |
| 範例:grep -n '!$' regular_express.txt 將行尾為 ! 的那一行列印出來! |
|
| . | 代表『任意一個』字符,一定是一個任意字符! |
| 範例:grep -n 'e.e' regular_express.txt 搜尋的字串可以是 (eve) (eae) (eee) (e e), 但不能仅有 (ee) !亦即 e 與 e 中間『一定』僅有一個字元,而空白字元也是字元! |
|
| / | 跳脫字符,將特殊符號的特殊意義去除! |
| 範例:grep -n /' regular_express.txt 搜尋含有單引號 ' 的那一行! |
|
| * | 重复零個或多個的前一個 RE 字符 |
| 範例:grep -n 'ess*' regular_express.txt 找出含有 (es) (ess) (esss) 等等的字串,注意,因為 * 可以是 0 個,所以 es 也是符合帶搜尋字串。另外,因為 * 為重複『前一個 RE 字符』的符號, 因此,在 * 之前必須要緊接著一個 RE 字符喔!例如任意字元則為 『.*』 ! |
|
| /{n,m/} | 連續 n 到 m 個的『前一個 RE 字符』 若為 /{n/} 則是連續 n 個的前一個 RE 字符, 若是 /{n,/} 則是連續 n 個以上的前一個 RE 字符! |
| 範例:grep -n 'go/{2,3/}g' regular_express.txt 在 g 與 g 之間有 2 個到 3 個的 o 存在的字串,亦即 (goog)(gooog) |
|
| [] | 字元集合的 RE 特殊字符的符號 |
| [list] 範例:grep -n 'g[ld]' regular_express.txt 搜尋含有 (gl) 或 (gd) 的那一行~ 需要特別留意的是,在 [] 當中『謹代表一個待搜尋的字元』, 例如: a[afl]y 代表搜尋的字串可以是 aay, afy, aly 亦即 [afl] 代表 a 或 f 或 l 的意思! [ch1-ch2] [^] |
正则表达式(Regular Expression)是通过一些特殊字符的排列,用以查找、替换、删除一行或多行字符串的一种表达式。
正则表达式并不是一个工具或程序,而是一种字符串处理的依据,Linux下的很多文本编辑工具都支持这一标准,比如vi。
Linux07--Shell程序设计03 通配符与正则表达式的更多相关文章
- linux中的通配符与正则表达式
在linux中,有通配符及正则表达式,那么什么是通配符和正则表达式,什么时候用? 通配符 它是由shell解析,并且一般用于匹配文件名,实际上就是shell解释器去解析的特殊符号,linux系统通 ...
- Linux 的使用基础---Shell程序设计
Shell是Linux系统中的一个重要的层次,它是用户与系统交互作用的界面.Shell除了作为命令解释程序以外,还是一种高级程序设计语言.利用Shell程序设计语言可以编写出功能很强.但代码简单的程序 ...
- Linux程序设计之shell程序设计
看了<linux程序设计(第4版)>(作者:Neil Matthew ,Richard Stones ,陈建 ,宋健建译).做个笔记,以备后面查看. 首先,清楚几个概念. shell编程属 ...
- Linux shell 程序设计
shell 程序设计 主要的学习内容包含基本思路,语法:变量.条件判断和程序控制,命令列表,函数,命令及执行,调试,grep命令和正则表达式,find命令 什么是shell 适用编写执行相对简单任务的 ...
- shell(2):正则表达式
一.整理正则表达式博客 (1)正则 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 在linux中,通配符是由shel ...
- Linux Shell/Bash wildcard通配符、元字符、转义符使用
说到shell通配符(wildcard),大家在使用时候会经常用到.下面是一个实例: 1 1 2 3 4 [chengmo@localhost ~/shell]$ ls a.txt b.txt ...
- [转帖]Linux教程(13)- Linux中的通配符和正则表达式
Linux教程(13)- Linux中的通配符和正则表达式 2018-08-22 06:16:44 钱婷婷 阅读数 39更多 分类专栏: Linux教程与操作 Linux教程与使用 版权声明:本文 ...
- Shell系列(19)- 正则表达式
正则表达式与通配符 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配.grep,awk,sed等命令可以支持正则表达式. 通配符用来匹配符号条件的文件名,通配符是完全匹配.ls,find,c ...
- linux通配符与正则表达式
通配符 * 任意字符,可重复多次 ? 任意字符,重复一次 [] 代表一个字符 举例: [a,b,c] 表示abc中任意一个 通配符的作用是用来匹配文件名的 正则表达式 正则表达式 ...
随机推荐
- sqlplus 链接数据库
实验目的:在虚拟机中用sqlplus工具访问真实机的数据库: 实验环境: 真实机(windows系统,数据库服务名 orcl): SQL> select * from v$version; BA ...
- JDBC之一:JDBC快速入门
(1)下载Oracle的JDBC驱动,一般放在$ORACLE_HOME/jdbc/lib目录,关于驱动的版本请见: http://elf8848.iteye.com/blog/811037 随Orac ...
- cocos2dx工程中接入支付宝sdk
1. 首先去支付宝官网下载开发者文档 2. 然后按着开发者文档将支付宝的sdk导入到你的工程中,并关联到工程中,步骤入下图: (1)将从支付宝官方网站获得的支付宝的sdk的jar包拷贝到工程中的lib ...
- windows 激活远程桌面服务
- Cable master--hdu1551(二分法)
Cable master Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tota ...
- Light Bulb--zoj3203(三分法)
Light Bulb Time Limit: 1 Second Memory Limit: 32768 KB Compared to wildleopard's wealthiness, h ...
- C# Chart 折线图 多条数据展示
private void btn_Click(object sender, EventArgs e) { DBHelper db = new DBHelper(); DataSet ds = db.G ...
- gdal vc++ 配置说明
1在VC中,打开菜Tool-Option,在Directories页面中的Library files中和Include files中分别添加GDAL的LIB文件目录和INCLUDE文件目录2打开菜 ...
- fstab 介绍
http://forum.ubuntu.org.cn/viewtopic.php?t=58468 主要翻译自http://www.tuxfiles.org/linuxhelp/fstab.html,根 ...
- 在MFC下实现图像放大镜
当我们想仔细观察某个细微的东西时,一般都会使用放大镜.而要看清显示在计算机屏幕上的图片或文字时通常也可以借助于Windows操作系统附带的放大程序来实现.但该程序只能以固定的放大倍数去进行观看,有时并 ...