万用字元与特殊符号及正则表示字符

万用字元与特殊符号及正则表示字符

  万用字元: 

符号 意义
* 代表‘ 0 个到无穷多个’任意字元
? 代表‘一定有一个’任意字元
[ ] 同样代表‘一定有一个在括号内’的字元(非任意字元)。例如 [abcd] 代表‘一定有一个字元, 可能是 a, b, c, d
这四个任何一个’
[ - ] 若有减号在中括号内时,代表‘在编码顺序内的所有字元’。例如 [0-9] 代表 0 到 9
之间的所有数字,因为数字的语系编码是连续的!
[^ ] 若中括号内的第一个字元为指数符号 (^) ,那表示‘反向选择’,例如 [^abc] 代表 一定有一个字元,只要是非 a, b, c
的其他字元就接受的意思。

  bash 环境中的特殊符号:

符号 内容
# 注解符号:这个最常被使用在 script 当中,视为说明!在后的资料均不执行
\ 跳脱符号:将‘特殊字元或万用字元’还原成一般字元
| 管线 (pipe):分隔两个管线命令的界定(后两节介绍);
; 连续指令下达分隔符号:连续性命令的界定 (注意!与管线命令并不相同)
~ 使用者的家目录
$ 取用变数前置字元:亦即是变数之前需要加的变数取代值
& 工作控制 (job control):将指令变成背景下工作
! 逻辑运算意义上的‘非’ not 的意思!
/ 目录符号:路径分隔的符号
>, >> 资料流重导向:输出导向,分别是‘取代’与‘累加’
<, << 资料流重导向:输入导向 (这两个留待下节介绍)
‘ ‘ 单引号,不具有变数置换的功能
" " 具有变数置换的功能!
` ` 两个‘ ` ’中间为可以先执行的指令,亦可使用 $( )
( ) 在中间为子 shell 的起始与结束
{ } 在中间为命令区块的组合!
特殊符号 代表意义
[:alnum:] 代表英文大小写字元及数字,亦即 0-9, A-Z, a-z
[:alpha:] 代表任何英文大小写字元,亦即 A-Z, a-z
[:blank:] 代表空白键与 [Tab] 按键两者
[:cntrl:] 代表键盘上面的控制按键,亦即包括 CR, LF, Tab, Del.. 等等
[:digit:] 代表数字而已,亦即 0-9
[:graph:] 除了空白字元 (空白键与 [Tab] 按键) 外的其他所有按键
[:lower:] 代表小写字元,亦即 a-z
[:print:] 代表任何可以被列印出来的字元
[:punct:] 代表标点符号 (punctuation symbol),亦即:" ‘ ? ! ; : # $...
[:upper:] 代表大写字元,亦即 A-Z
[:space:] 任何会产生空白的字元,包括空白键, [Tab], CR 等等
[:xdigit:] 代表 16 进位的数字类型,因此包括: 0-9, A-F, a-f 的数字与字元

  基础正则表示法字符汇整 (characters):

  正则表示法特殊字符汇整如下:

RE 字符 意义与范例
^word 意义:待搜寻的字串(word)在行首!
范例:搜寻行首为 # 开始的那一行,并列出行号

grep
-n ‘^#‘ regular_express.txt

word$ 意义:待搜寻的字串(word)在行尾!
范例:将行尾为 ! 的那一行列印出来,并列出行号

grep
-n ‘!$‘ regular_express.txt

. 意义:代表‘一定有一个任意字元’的字符!
范例:搜寻的字串可以是 (eve) (eae) (eee) (e e), 但不能仅有
(ee) !亦即 e 与 e 中间‘一定’仅有一个字元,而空白字元也是字元!

grep
-n ‘e.e‘ regular_express.txt

\ 意义:跳脱字符,将特殊符号的特殊意义去除!
范例:搜寻含有单引号 ‘ 的那一行!

grep
-n \‘ regular_express.txt

* 意义:重复零个到无穷多个的前一个 RE 字符
范例:找出含有 (es) (ess) (esss) 等等的字串,注意,因为 * 可以是
0 个,所以 es 也是符合带搜寻字串。另外,因为 * 为重复‘前一个 RE 字符’的符号, 因此,在 * 之前必须要紧接着一个 RE 字符喔!例如任意字元则为
‘.*’ !

grep
-n ‘ess*‘ regular_express.txt

[list] 意义:字元集合的 RE 字符,里面列出想要撷取的字元!
范例:搜寻含有 (gl) 或 (gd) 的那一行,需要特别留意的是,在 []
当中‘谨代表一个待搜寻的字元’, 例如‘ a[afl]y ’代表搜寻的字串可以是 aay, afy, aly 即 [afl] 代表 a 或 f 或 l 的意思!

grep
-n ‘g[ld]‘ regular_express.txt

[n1-n2] 意义:字元集合的 RE 字符,里面列出想要撷取的字元范围!
范例:搜寻含有任意数字的那一行!需特别留意,在字元集合 [] 中的减号
- 是有特殊意义的,他代表两个字元之间的所有连续字元!但这个连续与否与 ASCII 编码有关,因此,你的编码需要设定正确(在 bash 当中,需要确定 LANG
与 LANGUAGE 的变数是否正确!) 例如所有大写字元则为 [A-Z]

grep
-n ‘[0-9]‘ regular_express.txt

[^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

\{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

  说明

  ‘正规表示法的特殊字元’与一般在指令列输入指令的‘万用字元’并不相同,
例如,在万用字元当中的 * 代表的是‘ 0 ~ 无限多个字元’的意思,但是在正规表示法当中, * 则是‘重复 0 到无穷多个的前一个 RE
字符’的意思~使用的意义并不相同,不要搞混了!

  举例来说,不支援正规表示法的 ls 这个工具中,若我们使用 ‘ls -l * ’ 代表的是任意档名的档案,而 ‘ls -l a* ’代表的是以 a
为开头的任何档名的档案, 但在正规表示法中,我们要找到含有以 a 为开头的档案,则必须要这样:(需搭配支援正规表示法的工具)

ls | grep -n ‘^a.*‘

例题:

以 ls -l 配合 grep 找出 /etc/ 底下档案类型为连结档属性的档名

答:

由于 ls -l 列出连结档时标头会是‘ lrwxrwxrwx ’,因此使用如下的指令即可找出结果:

ls -l /etc | grep
‘^l‘

若仅想要列出几个档案,再以‘ |wc -l ’ 来累加处理即可。

时间: 2024-10-10 15:45:43

万用字元与特殊符号及正则表示字符的相关文章

三季度末我国信托业 资产规模近13万亿元[万奥]

[摘要]今年前三季度,信托业累计实现经营收入608.6亿元,同比增长12.831:累计实现利润总额434.43亿元,同比增长11.444. 中国信托业协会7日发布数据显示,截至三季度末,P2C信托业管理的信托资产规模为12.95万亿元,较去年末增长18.74:较今年二季度末环比增长3.771. 从季度环比增速看,今年三季度不仅延续了自2013年一季度开始的持续回落态势,而且回落幅度明显增大.2013年四季度全行业信托资产季度环比增速为7.665,2014年一季度为7.526,2014年二季度为6

js 千分位(分转元,万转元...)

//千分位 (万转元) function price(a){ var num = Number(a); if(!num){//等于0 return num+'.00'; }else{//不等于0 num=num*10000;//万到元(*修改此处,可灵活使用) num+='';//转成字符串 var reg=num.indexOf('.') >-1 ? /(\d{1,3})(?=(?:\d{3})+\.)/g : /(\d{1,3})(?=(?:\d{3})+$)/g;//千分符的正则 cons

如何将特殊符号转化成字符编码!

有时候使用一些小图标的时候,通常情况下,都是用的雪碧图将他们放在一起,然后通过背景调用,但是很多图标都是很简单的字符图标,却往往多增加了一些请求,大小也增加了(图片肯定比字符要大):为什么就不能将这些简单的字符图标用字符编码的形式来体现呢?这样性能不是更好吗?至少是一个网站优化的方向啊!所以我说干就干,在网上找找吧!照理说我这想法应该很多人都想到了啊,但是网上却很难找到把一些常用的字符图标转化为字符编码的文章或者是例子,然道是太简单了?还是说大神都不屑于做这样的事情!好吧,这叫我们这些菜鸟怎么办

JS魔法堂:再识ASCII实体、符号实体和字符实体

一.前言            相信大家都熟悉通过字符实体   来实现多个连续空格的输入吧!本文打算对三类HTML实体及JS相关操作作进一步的整理和小结,若有纰漏请大家指正,谢谢. 二.初识HTML实体                                                       由于HTML中某些字符是预留的(如>和<等),若要在进行HTML解析出来后能正确显示预留字符,则需要使用字符实体来代替了. 字符实体有两种表示方式: // 实体名 &entity

再识ASCII实体、符号实体和字符实体

一.前言            相信大家都熟悉通过字符实体   来实现多个连续空格的输入吧!本文打算对三类HTML实体及JS相关操作作进一步的整理和小结,若有纰漏请大家指正,谢谢. 二.初识HTML实体                                                       由于HTML中某些字符是预留的(如>和<等),若要在进行HTML解析出来后能正确显示预留字符,则需要使用字符实体来代替了. 字符实体有两种表示方式: // 实体名 &entity

Linux入门级需要掌握的命令

**1.目录的相关操作: cd, pwd, mkdir, rmdir 2.文件与目录的检视: ls 3.复制.删除与移动: cp, rm, mv 4. 取得路径的名称与目录名称 5.直接检视文件内容: cat, tac, nl 6. 可翻页检视: more, less 7. 资料撷取: head, tail 8. 非纯文字档: od 9. 修改文件时间与建置新档: touch 10. 文件预设权限:umask 11. 文件隐藏属性: chattr, lsattr 12. 文件特殊权限:SUID,

一些基础的 Linux 问题

一些基础的 Linux 问题最近更新日期:2005/05/23 --------------------------------------------------------------------------------一些基础的 Linux 问题与讨论: 注意:如果您有更好的试题,或者是有相关的资料要提供给 VBird 的话,我也会尽快的将他写到网页中的!感谢感谢!! ^_^ ..一.什么是 Linux 呢?! 试说明 Unix 与 Linux 的历史? 简单说明 GNU General

『转』古老的IRC命令

IRC 基本命令篇 ------------------------------- /JOIN 命令 [语法] /join <#闲聊室> [该闲聊室的密码] [描述] 用来加入某个闲聊室.如果该闲聊室设置了密码,你可以指定它. ------------------------------- /PART 命令 [语法] /part <#闲聊室> [退出的原因] [描述] 用来退出某个闲聊室,在某些IRC服务器上,你还可以指定退出的原因. -----------------------

pppd - 点对点协议守护进程

总览 SYNOPSIS pppd [ tty_name ] [ speed ] [ options ] 描述 点对点协议 (PPP) 提供一种在点对点串列线路上传输资料流 (datagrams)的方法.PPP是由三个部份所组成的:一个在串列线路上封装(encapsulating)资料流的方法,一个可延伸的连结控制协定(LinkControlProtocol:LCP),以及一些用来建立并配置不同网路层协定的网路控制协定(NetworkControlProtocols:NCP) 封装的机制(sche