grep之正则表达式的理解及应用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了grep之正则表达式的理解及应用相关的知识,希望对你有一定的参考价值。
正则表达式在本周学习中是个难点和重点,其中难免会有很多坑,也难免会不停的往里跳,当跳的比较多了也就长记性了,通过很多次练习慢慢也就能发现其中暗藏玄机,成功的避开大坑选择往小坑里跳了,我相信在以后的学习中会不断进步、勤加练习终究会跳出来的。好了,以下是本人对正则表达式的一点理解,如有错误之处请联系我,会修改和学习的。
一、正则表达式之grep.
正则表达式是一种符号表示法,用于识别文本模式。Linux处理正则表达式的主要程序是grep。grep搜索与正则表达式匹配的行,并将结果输送至标准输出。
(1)正则表达式之匹配模式。
①格式
grep按下述方式接受选项和参数(其中,REGEXP表示正则表达式)
grep [option] REGEXP file
②具体选项
选项 | 含义 | 功能描述 |
-i | ignore case | 忽略大小写 |
-v | invert match | 不匹配匹配的 |
-l | file-with-match | 输出匹配的文件名 |
-L | file-without-match | 输出不匹配的文件名 |
-c | count | 输出匹配的数目(行数) |
-n | number | 输出匹配行的同时在前面加上文件名及在文件名中的行数 |
-h | no-filename | 抑制文件名的输出 |
③举例说明
1、 显示/proc/meminfo文件中以大小s开头的行
2、显示/proc/meminfo文件中不以s开头的行
3、显示/proc/meminfo文件中大s开头的行数
4、显示/proc/meminfo文件中大s开头的行数并且在文件名上加上行数
华丽的分割线
二、下表包含了元字符的列表以及它们在正则表达式上下文中的行为:
字符 | 说明 |
^ | 匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与“\n”或“\r”之后的位置匹配。 |
$ | 匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与“\n”或“\r”之前的位置匹配。 |
* | 零次或多次匹配前面的字符或子表达式。例如,zo* 匹配“z”和“zoo”。* 等效于 {0,}。 |
+ | 一次或多次匹配前面的字符或子表达式。例如,“zo+”与“zo”和“zoo”匹配,但与“z”不匹配。+ 等效于 {1,}。 |
? | 零次或一次匹配前面的字符或子表达式。例如,“do(es)?”匹配“do”或“does”中的“do”。? 等效于 {0,1}。 |
{n} | n 是非负整数。正好匹配 n 次。例如,“o{2}”与“Bob”中的“o”不匹配,但与“food”中的两个“o”匹配。 |
{n,} | n 是非负整数。至少匹配 n 次。例如,“o{2,}”不匹配“Bob”中的“o”,而匹配“foooood”中的所有 o。“o{1,}”等效于“o+”。“o{0,}”等效于“o*”。 |
{n,m} | M 和 n 是非负整数,其中 n <= m。匹配至少 n 次,至多 m 次。例如,“o{1,3}”匹配“fooooood”中的头三个 o。‘o{0,1}‘ 等效于 ‘o?‘。注意:您不能将空格插入逗号和数字之间。 |
| | 或的意思。例如:"AAA|BBB"满足的例子AAA、BBBpp |
. | 任意字符。例如:"a.c"满足的例子abc、fapcc |
() | 将候选的所有元素放在()内,用|隔开。例如:"a(1|2|3)bc"满足的例子a1bc、mba3bcd |
[:alnum:] | 字母和数字,与[A-Za-z0-9]等价 |
[:alpa:] | 字母,与[A-Za-z]等价 |
[:digit:] | 数字,与[0-9]等价 |
[:xdigit:] | 十六进制字符,与[0-9A-Fa-f等价] |
[:blank:] | 空格和制表符 |
[:lower:] | 小写字母 |
[:upper:] | 大写字母 |
以上是关于grep之正则表达式的理解及应用的主要内容,如果未能解决你的问题,请参考以下文章
Linux操作系统基础解析之——grep命令家族及正则表达式初识