- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
精通Linux第6课
饭客网络安全培训基地
中国最大的网络安全培训
只做网络安全 信息安全方面的培训
宗旨:坚持 宣传 信誉 实力 回报
专业培训网络信息安全人才 成就中国网络安全边防军团
-------------------------------
大家好,我是Sweet 今天的Linux第6课
精通Linux之正则表示法
------------------------------------------------------------------------------------------------------
正则表示法概述
1.什么是正则表示法
正规表示法基本上是一种『表示法』, 只要工具支持这种表示法,那么该工具就可以用 来作为正规表示法的字串处理之用。 也就是说,例如 vi, grep
正则表示法相当重要,希望大家引起高度重视,也是最多最难掌握的部分,大家要鼓足信心,和我一起越过这个坎,那么以后就会非常容易!
2.语系对正规表示法的影响
为什么语系的资料会影响到正规表示法的输出结果呢?档桉其实记录的仅有 0 与 1,我们看到的字元文字与数字都是透过编码表转换来的。由于不同语系的编码资料并不相同,所以就会造成资料撷取结果的差异了。 举例来说,在英文大小写的编码顺序中,zh_TW.big5 及 C 这两种语系的输出结果分别如下:
LANG=C 时:0 1 2 3 4 ... A B C D ... Z a b c d ...z
LANG=zh_TW 时:0 1 2 3 4 ... a A b B c C d D ... z Z
由上面的顺序是编码的顺序,我们可以很清楚的发现这两种语系明显就是不一样!如果你想要撷取大写字元而使用 [A-Z] 时, 会发现 LANG=C 确实可以仅捉到大写字元 (因为是连续的) ,但是如果 LANG=zh_TW.big5 时,就会发现到, 连同小写的 b-z 也会被撷取出来!因为就编码的顺序来看, big5 语系可以撷取到『 A b B c C ... z Z 』这一堆字元哩! 所以,使用正规表示法时,需要特别留意当时环境的语系为何, 否则可能会发现与别人不相同的撷取结果
基础正在表示法
grep的使用
Grep通常和我们的查看命令一起使用,比如less,语法如下
Grep [命令] [ 关键字] [档案内容]
Grep -n 输出行号
grep -i 输出结果忽略大小写
grep -v 反向选择
| 管线命令
或者 重定向
或者 追加
echo的使用
正则表示法的一般命令意义及其用法
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 字符,裡面列出想要撷取的字元范围!范例:搜寻含有任意数字的那一行!需特别留意,在字元集合 [] 中的减号 - 是有特殊意义的,他代表两个字元之间的所有连续字元!但这个连
文档评论(0)