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中任意一个 通配符的作用是用来匹配文件名的 正则表达式 正则表达式 ...
随机推荐
- Spring的IOC注解学习
先引入jar包,common-annotations.jar 接着上代码: 1.dao接口 package com.dao; public interface OkpDao { public void ...
- windows 文件watch nodejs
本篇博客,主要是记录下最近一直纠结的gulp.watch方法,在工作中我们肯定都遇到过,新添加的文件没办法自动触发watch,下面我们就来看有什么办法处理 1.首先我们肯定是先百度一下 百度推荐的是g ...
- $.each与$(data).each区别
在前端使用使用JQuery解析Json数据时,在遍历数组或者对象数据时,经常使用的函数为each.发现此函数有两种形式: $.each $(data).each 所达到的效果是一样的,使用方法的有一些 ...
- Azure上Linux VM防DDOS攻击:使用Apache mod_evasive
部署在云端的虚拟机和web服务,很容易受到DoS护着DDoS的服务攻击,让一些新上线的业务苦不堪言,当然各个云服务提供商也有不同层面DDOS的防护,然而由于防护粒度,攻击复杂度的关系,未必可以满足你的 ...
- Matalab之模糊KMeans实现
这节继续上节的KMeans进行介绍,上节主要是对模糊KMeans方法的原理做了介绍,没有实践印象总是不深刻,前段时间有个师姐让我帮着写了个模糊KMeans的算法,今天就拿她给出的例子来对这个方法做个实 ...
- Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等
仿照微信,朋友圈分享图片功能 .可以进行图片的多张选择,拍照添加图片,以及进行图片的预览,预览时可以进行缩放,并且可以删除选中状态的图片 .很不错的源码,大家有需要可以下载看看 . 微信 微信 微信 ...
- adb 异常报错----adb server is out of date. killing... ADB server didn't ACK * failed to start daemon *
在Eclipse进行android开发的时候,由于要启动adb,但有时候其他的程序启动会占用adb程序的端口,这时候在对android程序进行调试的时候就会出现报错: 究其原因就是因为其他程序占用了a ...
- cf459E Pashmak and Graph
E. Pashmak and Graph time limit per test 1 second memory limit per test 256 megabytes input standard ...
- Power Strings(kmp妙解)
Power Strings Time Limit : 6000/3000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) Tota ...
- ubuntu下google 拼音输入法的安装
google拼音输入法安装 (1).获代替码:(没有git的先安装git:sudoapt-get install git-core) $>gitclone git://github.com/tc ...