一、前言
grep是功能强大的文本处理工具,全称:global search regular expression and print out the line,grep一行一行使用正则表达式匹配文本,之后对匹配到的文本整行显示(除非使用特定的选项取反,如 grep -v)。
二、grep用法
grep命令用法:
grep [OPTIONS] PATTERN [FILE…]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE…]
为了使用grep用法,我们不得不先简单学习下正则表达式
2.1、正则表达式用法
首先,我们要明白什么是正则表达式?所谓正则表达式就是使用单个字符串来描述、匹配一系列符合某个语法规则的字符串。正则表达式由一些普通字符和元字符组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义。
2.1.1、元字符用法
a:字符匹配
. | 匹配任意单个字符 | 例如:grep roo. /etc/passwd | |||||||
[] | 匹配指定范围内的任意单个字符 | 例如:grep [ro] /etc/passwd | |||||||
[^] | 取反 | 例如:grep [^ro] /etc/passwd |
b:次数匹配
* | 匹配任意次数 | 例如: grep roo* /etc/passwd | |||||||
\? | 匹配其前面字符出现0或者1次 | 例如: grep roo\? /etc/passwd | |||||||
\{m\} | 匹配其前面字符出现m次 | 例如: grep ro\{2\} /etc/passwd | |||||||
\{m,\} | 匹配其前面字符最少出现m次 | 例如: grep ro\{2,\} /etc/passwd | |||||||
\{m,n\} | 匹配其前面字符最少出现m次,最多n次 | 例如: grep ro\{2,3\} /etc/passwd | |||||||
\{0,n\} | 匹配其前面字符最多n次 | 例如: grep ro\{0,2\} /etc/passwd |
c:位置锚定匹配
^ | 行首锚定符 | 例如:grep ^root /etc/passwd | |||||||
$ | 行尾锚定符 | 例如:grep shell$ /etc/passwd | |||||||
\< | 词首锚定符 | 例如:grep \<root /etc/passwd | |||||||
\> | 词尾锚定符 | 例如:grep shell\> /etc/passwd |
d:分组
\(\) | 分组,分组中模式匹配的内容可被引用 | 例如:grep \(root\).*\1 /etc/passwd |
e:引用
\# | 引用分组中第#个内容(#为数字) | 例如:grep \(root\).*\1 /etc/passwd |
2.2、grep常用的选项
-v | 反向选择 | 例如:grep -v root /etc/passwd | |||||||
-o | 仅显示匹配的字符串本身,而非所在行 | 例如:grep -o root /etc/passwd | |||||||
-i | 忽略大小写 | 例如:grep -i root /etc/passwd | |||||||
-E | 支持使用扩展正则表达式 | 例如:grep -E (root).*\1 /etc/passwd | |||||||
-A | 后面n行 | 例如:grep -A 3 root /etc/passwd | |||||||
-B | 前面n行 | 例如:grep -B 3 mysql /etc/passwd | |||||||
-C | 前后各n行 | 例如:grep -C 3 mysql /etc/passwd |
三、总结
grep用法其实并不难,难在正则表达式的使用,grep是非常强大的文本搜索工具,熟练使用grep工具有利于我们后续对文本文件的处理。
原创文章,作者:成吉思汗,如若转载,请注明出处:http://www.178linux.com/7190