Linux中通配符与正则表达式
来源:互联网 发布:vb.net 调用水晶报表 编辑:程序博客网 时间:2024/05/17 18:24
通配符用于Linux的shell命令(如文件名相关操作)中,而正则表达式用于文本内容中的字符串搜索和替换等。通配符是Linux系统本身就支持的,而正则表达式用于vim编辑器或awk程序,这些文本处理工具正是由于支持正则表达式才变得强大。
一、通配符
符号 意义
* 代表『 0 个到无穷多个』任意字符
? 代表『一定有一个』任意字符
[ ] 同样代表『一定有一个在括号内』的字符(非任意字符)。例如 [abcd] 代表『一定有一个字符, 可能是 a, b, c, d 这四个任何一个』
[ - ] 若有减号在中括号内时,代表『在编码顺序内的所有字符』。例如 [0-9] 代表 0 到9 之间的所有数字,因为数字的语系编码是连续的!
[^ ] 若中括号内的第一个字符为指数符号 (^) ,那表示『反向选择』,例如 [^abc] 代表 一定有一个字符,只要是非 a, b, c 的其他字符就接受的意思。
范例一:找出 /etc/ 底下以 cron 为开头的文件
[root@www ~]# ll -d /etc/cron* <==加上 -d 是为了仅显示目录而已
范例二:找出 /etc/ 底下文件名『刚好是五个字母』的文件名
[root@www ~]# ll -d /etc/????? <==由于 ? 一定有一个,所以五个 ? 就对了
范例三:找出 /etc/ 底下文件名含有数字的文件名
[root@www ~]# ll -d /etc/*[0-9]* <==记得中括号左右两边均需 *
范例四:找出 /etc/ 底下,档名开头非为小写字母的文件名:
[root@www ~]# ll -d /etc/[^a-z]* <==注意中括号左边没有 *
范例五:将范例四找到的文件复制到 /tmp 中
[root@www ~]# cp -a /etc/[^a-z]* /tmp
二、特殊符号
符号 内容
# 批注符号:这个最常被使用在 script 当中,视为说明!在后的数据均不执行
\ 跳脱符号(转义字符):将『特殊字符或通配符』还原成一般字符
| 管线 (pipe):分割两个管线命令的界定
; 连续指令下达分隔符:连续性命令的界定 (注意!与管线命令并不相同)
~ 用户的家目录
$ 取用变数前导符:亦即是变量之前需要加的变量取代值
& 工作控控制(job control):将指令变成背景下工作
! 逻辑运算意义上的『非』 not 的意思!
/ 目录符号:路径分割的符号
>, >> 数据流重导向:输出导向,分别是『取代』与『累加』
<, << 数据流重导向:输入导向
' ' 单引号,不具有变量置换的功能
" " 具有变量置换的功能!
` ` (反引号)两个『 ` 』中间为可以先执行的指令,亦可使用 $( )
( ) 在中间为子 shell 的起始和结束
{ } 在中间为命令区块的组合!
三、正则表达式
RE 字符 意义与范例
1、^word
意义:待搜寻的字符串(word)在行首!
范例:搜寻行首为 # 开始的那一行,并列出行号
grep -n '^#' regular_express.txt
2、word$
意义:待搜寻的字符串(word)在行尾!
范例:将行尾为 ! 的那一行打印出来,并列出行号
grep -n '!$' regular_express.txt
3、.
意义:代表『一定有一个任意字符』的字符!
范例:搜寻的字符串可以是 (eve) (eae) (eee)(e e), 但不能仅有 (ee) !亦即 e和 e 中间『一定』仅有一个字符,而空格符也是字符!
grep -n 'e.e' regular_express.txt
4、\
意义:跳脱字符,将特殊符号的特殊意义去除!
范例:搜寻含有单引号 ' 的那一行!
grep -n \' regular_express.txt
5、*
意义:重复零个到无穷多个的前一个 RE 字符
范例:找出含有 (es) (ess) (esss)等等的字符串,注意,因为 * 可以是 0 个,所以es 也是符合带搜寻字符串。另外,因为 *为重复『前一个 RE 字符』的符号, 因此,在 * 之前必须要紧接着一个 RE 字符!例如任意字符则为 『.*』 !
grep -n 'ess*' regular_express.txt
6、[list]
意义:字符集合的 RE 字符,里面列出想要搜索的字符!
范例:搜寻含有 (gl) 或 (gd) 的那一行,需要特别留意的是,在 [ ] 当中『仅代表一个待搜寻的字符』, 例如『 a[afl]y 』代表搜寻的字符串可以是 aay, afy, aly 即[afl] 代表 a 或 f 或 l 的意思!
grep -n 'g[ld]' regular_express.txt
7、[n1-n2]
意义:字符集合的 RE 字符,里面列出想要搜索的字符范围!
范例:搜寻含有任意数字的那一行!需特别留意,在字符集合 [ ] 中的减号 - 是有特殊意义的,他代表两个字符之间的所有连续字符!例如所有大写字符则为 [A-Z]
grep -n '[0-9]' regular_express.txt
8、[^list]
意义:字符集合的 RE 字符,里面列出不要的字符串或范围!
范例:搜寻的字符串可以是 (oog) (ood) 但不能是 (oot) ,那个 ^ 在 [ ] 内时,代表的意义是『反向选择』的意思。 例如,我不要大写字符,则为 [^A-Z]。但是,需要特别注意的是,如果以 grep -n [^A-Z]regular_express.txt 搜寻,却发现该档案内的所有行都被列出,为什么?因为这个 [^A-Z] 是『非大写字符』的意思, 因为每一行均有非大写字符,例如第一行的 "Open Source" 就有p,e,n,o.... 等等的小写字
grep -n 'oo[^t]' regular_express.txt
9、\{n,m\}
意义:连续 n 到 m 个的『前一个 RE 字符』
意义:若为 \{n\} 则是连续 n 个的前一个 RE 字符, 意义:若是 \{n,\} 则是连续 n 个以上的前一个 RE 字符! 范例:在 g 到 g 之间有2 个到 3 个的 o 存在的字符串,亦即 (goog)(gooog)
grep -n 'go\{2,3\}g' regular_express.txt
- Linux中通配符与正则表达式
- 浅析Linux中通配符与正则表达式
- Linux正则表达式与通配符
- Linux通配符与正则表达式
- linux通配符与正则表达式
- Linux 正则表达式与通配符
- Linux Shell的通配符与正则表达式
- Linux Shell的通配符与正则表达式
- Linux Shell的通配符与正则表达式
- Linux Shell的通配符与正则表达式
- Linux Shell的通配符与正则表达式
- linux 通配符与正则表达式(grep、find)
- linux下的通配符与正则表达式
- Linux Shell的通配符与正则表达式
- linux下通配符与正则表达式
- linux下的通配符与正则表达式
- Linux 系统的通配符与正则表达式
- Linux正则表达式-通配符
- Tsinsen A1303. tree(伍一鸣) LCT
- KMP算法
- 有趣的js点灯
- 线程池发送邮件的公共类实现
- Admob新版本使用入门
- Linux中通配符与正则表达式
- android JNI开发之 ----HelloWorld
- 虚拟机随谈: 解释器, 树遍历解释器, 基于栈与基于寄存器, 大杂烩
- WPF中的依赖项属性
- 黑马程序员——集合(二)--Collections、Arrays、泛型
- 横幅广告(1)Admob
- Android 部分内容设置颜色、字体、超链接、图片
- css笔记简洁版
- 厦门网中网软件有限公司