随笔分类 -  Shell脚本学习指南

Shell脚本编程自学笔记分享
摘要:在 ERE 里运算符的优先级和 BRE 一样。由高至低列出了 ERE 运算符的优先级。 运算符 含义 [..] [= =] [: :] 用于字符对应的方括号符号 \metacharacter 转义的 meta 字符 [ ] 方括号表达式 ( ) 分组 *+?{} 重复前置的正则表达式 无符号(no 阅读全文
posted @ 2019-01-23 09:08 Avention 阅读(193) 评论(0) 推荐(0)
摘要:在 ERE 里,我们已经提到运算符是被应用到“前置的正则表达式”。这是因为圆括号 (...) 提供分组功能,让接下来的运算符可以应用。举例来说,(why)+ 匹配于一个连续重复的多个 why 。 在必须用到交替时, 分组的功能就特别好用(也是必须的)。它可以让你用以构建复杂并灵活的正则表达式。 [T 阅读全文
posted @ 2019-01-23 09:07 Avention 阅读(129) 评论(0) 推荐(0)
摘要:^ 与 $ 在这里表示的意义与 BRE 里的相同:将正则表达式停驻在文本字符串(或行)的起始或结尾处。不过有个明显不同的地方就是:在 ERE 里, ^ 与 $ 永远是 meta 字符。所以,像 ab^cd 与 ef$gh 这样的正则表达式仍是有效的,只是无法匹配任何东西。因为 ^ 前置了文本,与 $ 阅读全文
posted @ 2019-01-23 09:07 Avention 阅读(116) 评论(0) 推荐(0)
摘要:ERE 在匹配多个字符这方面,与 BRE 有很明显的不同。不过,在 * 的处理上和 BRE 是相同的。 区间表达式可用于 ERE 中,但它们是写在花括号里({}),且不需要前置反斜杠字符。因此“要刚好重现5个a”的写法为 a{5}。而 \{ 与 \} 则可用以匹配字面上的花括号。当在 ERE 里 { 阅读全文
posted @ 2019-01-23 09:06 Avention 阅读(3029) 评论(0) 推荐(0)
摘要:方括号表达式易于表示“匹配于此字符,或其他字符,或 ...”,但不能指定“匹配于这个序列,或其他序列,或 ...”。要达到后者的目的,你可以使用交替运算符,即 | 。你可以简单写好两个字符序列,再以 | 将其隔开。例如 read | write 匹配于 read 与 write 两者。可以使用多个该 阅读全文
posted @ 2019-01-23 09:06 Avention 阅读(129) 评论(0) 推荐(0)
摘要:在匹配单个字符的情况下,ERE 本质上是与 BRE 一致的。特别是像一般字符、用以转义 meta 字符的反斜杠,以及方括号表达式,这些行为模式都与先前提及的 BRE 相同。较有名的一个例外出现在 awk 里:其 \ 符号在方括号表达式内表示其他含义。因此,如需匹配作方括号、连字符、右方括号或是反斜杠 阅读全文
posted @ 2019-01-23 09:05 Avention 阅读(121) 评论(0) 推荐(0)
摘要:ERE 里是没有后向引用的。圆括号在 ERE 里具特殊意义,但和 BRE 里的使用有有所不同。在 ERE 里,\( 与 \) 匹配的是字面上的左括号和有括号。 阅读全文
posted @ 2019-01-23 09:05 Avention 阅读(118) 评论(0) 推荐(0)
摘要:在数学表达式里,正则表达式的运算符具有某种已定义的优先级,指的是某个运算符(优先级较高)将比其他运算符先被处理。 BRE运算符优先级,由高至低 运算符 表示含义 [..] [==] [::] 用于字符排序的方括号符号 \metacharacter 转义的 meta 字符 [ ] 方括号表达式 \( 阅读全文
posted @ 2019-01-23 09:04 Avention 阅读(177) 评论(0) 推荐(0)
摘要:ERE 的含义就如同其名字所示:拥有比基本正则表达式更多的功能。BRE 与 ERE 在大多数 meta 字符与功能上几乎是完全一致,但 ERE 里有些 meta 字符看起来与 BRE 类似,却具有完全不同的意义。 阅读全文
posted @ 2019-01-23 09:04 Avention 阅读(140) 评论(0) 推荐(0)
摘要:再介绍两个 mate 字符就能完成整个 BRE 的介绍了。这两个 meta 字符是脱字符号(^)与货币符号($),它们叫做锚点(anchor),因为其用途在限制正则表达式匹配时,真对要被匹配字符串的开始或结尾进行匹配(^在此处的用法与方括号表达式里的完全不同)。假定现在有一串要进行匹配的字:abcA 阅读全文
posted @ 2019-01-23 09:03 Avention 阅读(321) 评论(0) 推荐(0)
摘要:匹配多字符最简单的方法就是把它们一个接一个(连接)列出来,所以正则表达式 ab 匹配于 ab, ..(两个点号)匹配于任意两个字符,而 [[:upper:][:lower:]] 则匹配于任意一个大写字符,后面接着任意一个小写字符。不过,将这些字符全列出来只有在简短的正则表达式里才好用。 虽然 . ( 阅读全文
posted @ 2019-01-23 09:03 Avention 阅读(183) 评论(0) 推荐(0)
摘要:最先开始是匹配单个字符。可采用集中方式做到:以一般字符、以转义的 meta 字符、以 . meta 字符,或是用方括号表达式: 一般字符指的是未列于 POSIX BRE 于 ERE 的 meta 字符,包括所有文字和数字字符、绝大多是的空白字符以及标点符号字符。因此,正则表达式 a ,匹配于字符 a 阅读全文
posted @ 2019-01-23 09:02 Avention 阅读(227) 评论(0) 推荐(0)
摘要:BRE 提供一种叫后向引用的机制,指的是“匹配于正则表达式匹配的先前的部分”。使用后向引用的步骤有两个。第一步是将子表达式包围在 \( 与 \) 里;单个模式里可包括之多9个子表达式,且可为嵌套结构。 下一步是在同一模式之后使用\digit,digit指的是介于1至9的数字,指的是“匹配于第n个先前 阅读全文
posted @ 2019-01-23 09:02 Avention 阅读(149) 评论(0) 推荐(0)
摘要:为配合非英语的环境,POSIX 标准强化其字符集范围的能力(例如,[a-z]),以匹配非英文字母字符。 POSIX 也在一般术语上作了些变动,我们早先看到的范围表达式在 UNIX 里通常称为字符集,在 POSIX 的标准下,现在叫做方括号表达式。在方括号表达式里,除了上面的字符之外,另有额外的组成部 阅读全文
posted @ 2019-01-23 09:01 Avention 阅读(298) 评论(0) 推荐(0)
摘要:BRE 与 ERE 共享一些常见的特性,不过仍有些重要差异。我们会从 BRE 的说明开始,再介绍 ERE 附加的 meta 字符,最后针对使用相同(或类似)meta 字符但拥有不同语义的情况进行说明。 BRE 是由多个组成部分所构建,一开始提供数种匹配单个字符的方式,而后又结合额外的 meta 字符 阅读全文
posted @ 2019-01-23 09:01 Avention 阅读(159) 评论(0) 推荐(0)
摘要:正则表达式是一种表示方式,让你可以查找匹配特定准则的文本,例如,“以字母 a 开头”。此表示法让你可以写一个表达式,选定或匹配多个数据字符串。 很多的UNIX工具程序沿用某一种正则表达式形式来强化本身的功能。这里列举一部分例子: 用来寻找匹配文本行的 grep 工具族:grep 与 egrep ,以 阅读全文
posted @ 2019-01-22 22:55 Avention 阅读(348) 评论(0) 推荐(0)
摘要:本节提供有关正则表达式构造与匹配方式的概述。特别会提及 POSIX BRE 与 ERE 构造,因为它们想要将大部分 UNIX 工具里的两种正则表达式基本风格(flavors)加以正式化。 gerp 语法 grep [ options ... ] pattern-spec [ files ... ] 阅读全文
posted @ 2019-01-22 22:54 Avention 阅读(275) 评论(0) 推荐(0)
摘要:grep 最简单的用法就是使用固定字符串: [many@avention Desktop]$ who many :0 2019-01-05 17:46 (:0) many pts/0 2019-01-05 17:46 (:0) [many@avention Desktop]$ who | grep 阅读全文
posted @ 2019-01-22 22:52 Avention 阅读(153) 评论(0) 推荐(0)
摘要:UNIX程序员偏好处理文本的行与列。文本型数据比二进制数据更具灵活性,且UNIX系统也提供许多工具,让用户可以轻松地剪贴文本。 在本章中,讨论编写Shell脚本时经常用到的两个基本操作;文本查找(seareching 寻找含有特定文本的行)与文本替换(substitution 更换找到的文本)。 虽 阅读全文
posted @ 2019-01-22 22:51 Avention 阅读(144) 评论(0) 推荐(0)
摘要:以 grep 程序查找文本是相当方便的。在 POSIX 系统上,grep 可以在两种正则表达式风格中选择一种,或是执行最简单的字符串匹配。 传统上,有三种程序,可以用来查找整个文本文件: grep 最早的文本匹配程序,使用 POSIX定义的基本正则表达式。 egrep 扩展式 grep 。这个程序使 阅读全文
posted @ 2019-01-22 22:51 Avention 阅读(208) 评论(0) 推荐(0)