day8:grep命令入门
grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
grep 语法格式:
grep [options] 'pattern' filename
1.options主要选项:
--color=auto 对匹配到的文本着色显示
-v 显示不被pattern匹配到的行
-i 忽略字符大小写
-n 显示匹配的行号
-c 统计匹配的行数
-o 仅显示匹配到的字符串
-q 静默模式,不输出任何信息
-A # after, 后#行
-B # before, 前#行
-C # context, 前后各#行
-e 实现多个选项间的逻辑or关系,如grep –e ‘cat ’ -e ‘dog’ file
-w 匹配整个单词
-E 使用ERE,相当于egrep
-F 相当于fgrep,不支持正则表达式
2.grep中正则表达式的应用:
在grep中使用正则表达式时,正则外面可以不用'';如grep r..t /etc/passwd;当然写成 grep 'r..t' /etc/passwd也是一样的结果。
元字符 | 功能 | 示例 |
^ | 行首定位符 | ^my 匹配所有以my开头的行 |
$ | 行尾定位符 | my$ 匹配所有以my结尾的行 |
. | 匹配除换行符以外的单个字符 | m..y 匹配包含字母m,后跟两个任意字符,再跟字母y的行 |
* | 匹配零个或多个前导字符 | my* 匹配包含字母m,后跟零个或多个y字母的行 |
[] | 匹配指定字符组内的任一字符 | [Mm]y 匹配包含My或my的行 |
[^] | 匹配不在指定字符组内的任一字符 | [^Mm]y 匹配包含y,但y之前的那个字符不是M或m的行 |
[a-z] | 任一小写字母 | |
[a-Z] | 任一字母 | |
a? | 匹配?前导字符a零个或一个 | |
a+ | 匹配前导字符a一个或多个 | |
\< | 词首定位符 | /\<my/ 匹配包含以my开头的单词的行 |
\> | 词尾定位符 | /my\>/ 匹配包含以my结尾的单词的行 |
x\{m\} | 连续m个x | /9\{5\}/ 匹配包含连续5个9的行 |
x\{m,\} | 至少m个x | /9\{5,\}/ 匹配包含至少连续5个9的行 |
x\{m,n\} | 至少m个,但不超过n个x | /9\{5,7\}/ 匹配包含连续5到7个9的行 |
扩展正则:grep -E 或 egrep,扩展正则支持