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中任意一个 通配符的作用是用来匹配文件名的 正则表达式 正则表达式 ...
随机推荐
- win7使用右键导致死机、假死、explorer无法响应的解决方法
右键引起explorer无法响应,奔溃,主要是由于COMCTL32.DLL和COMCTL21.OCX文件引起的 描述:comctl32.dll是Windows应用程序公用GUI图形用户界面模块.报告提 ...
- 初识HTML5
1, 新增canvas标签,允许通过JS在客户端完成2D绘图 2, 新增Video/Audio标签,能取代flash实现媒体播放 3, 新增本地存储功能:localStorage/sessionSto ...
- 自定义filter
class md5_filter extends php_user_filter{ public function filter($in,$out,&$consumed,$closing){ ...
- activity 的返回按钮
http://www.2cto.com/kf/201210/160251.html 连续点击两次程序就退出程序,这是一个很有趣的程序功能,下来介绍一下我的实现方式(欢迎大家拍砖指点): 1.在Ac ...
- Delphi HTML5 Canvas组件
最近去sourceforge瞎转悠,突然发了一个组件,关于Delphi下Html5的canvas的组件,大概浏览了一下源码,竟然是纯粹的Pascal代码,也就说完全的Delphi代码.不敢独享,现在上 ...
- 单元测试(UT)、功能测试(FT)(转)
纯个人总结: 单元测试(UT).功能测试(FT): 目的:1.尽量避免写的代码测试人员频繁的来找你其他地方又出问题了:2.提供的接口不可用:3.一个bug修复了引入了其他的bug或者其他用例变红了: ...
- 【D3.V3.js系列教程】--(十五)SVG基本图形绘制
[D3.V3.js系列教程]--(十五)SVG基本图形绘制 1.path <!DOCTYPE html> <html> <head> <meta charse ...
- 学习linux之用户-文件-权限操作
添加用户组 添加 gropuadd 用户组名 修改 groupmod 用户组名 删除 groupdel 用户组名 添加用户 添加 useradd 用户名 设密码 passwd 密码 删除 userde ...
- css案例学习之float浮动
代码: <!DOCTYPE html PUBliC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3. ...
- firebug加载不了js脚本文件问题
转载自:http://tieba.baidu.com/p/1008322286 现象: 页面中有加载js文件,但是firebug却提示: 本页面不包含 Javascript 如果 <scr ...