Linux grep使用详解
2016-07-13 16:40
489 查看
Linux grep使用详解
概述
grep 是Linux/Unix下,对于一组输入文本进行搜索与匹配的一个实用工具。grep 从输入文本中搜索并匹配给定的文本或者模式,这些文本可以是固定内容的文本,也可以用正则表达式去进行搜索匹配,grep 的功能在很多场景下都非常强大,本文将记录一些比较常用的功能。选项与参数(符号‘,’ 分割的选项效果等同)
-A num, –after-context=num 打印出匹配结果之后的num行文本.-B num, –before-context=num 打印出匹配结果之前的num行文本.
-C num, –context=num 打印出匹配结果之前与之后的num行,等同于同时使用-A num与-B num.
-a, –text= 将所有文件视为ASCII文本对待.
part 1 example:
假定有一个hello.c文件,实现的是最简单的打印hello world功能,想在该文件中查找某个固定内容文本,可以这样用:cat hello.c | grep -a ‘hello world’ #通过管道将cat的执行结果传递给grep,并查找hello world字符串
cat hello.c | grep -A 10 -a ‘hello world’ #查找hello world并打印其后10行内容
cat hello.c | grep -C 10 -a ‘hello world’ #查找hello world并打印其前后各10行内容
-c, –count 输出搜索到 ‘搜索字符串’ 的行数.
-n, –line-number 每行搜索结果之前显示结果所在文件中的行号.
-f file, –file=file 在指定文件中搜索文本或模式.
-v, –invert-match 搜索不包含搜索文本或模式的行.
-i, –ignore-case 忽略大小写区别.
part 2 example:
cat hello.c | grep -n -A 10 -a ‘hello world’ #在part 1例子的基础上,结果显示将多显示一个行号cat hello.c | grep -n -v -a ‘hello world’ #结果将显示不包含hello world的行及行号
-e pattern, –regexp=pattern 搜索符合pattern的字符串.
正则表达式规则
^ #界定行的开始,如 ‘^grep’ 意为匹配以grep开始的行美元符号(markdown抽风,不能打这个。。) #界定行的结束,如 ’ grep$ ’ 意为匹配以grep结尾的行
. #匹配一个非换行字符,如 ‘gr.p’ 意为匹配gr后接任意一个非换行字符,其后是p的行
星号 #匹配零个或多个先前字符 如:’*grep’匹配所有一个或多个空格后紧跟grep的行
.* #同时用代表任意字符
[] #匹配一个指定范围内的字符,如 ‘[Gg]rep’ 意为匹配Grep或者grep
[^] #匹配不在一个指定范围内的字符,如 ‘[ ^a-zA-Z ]’ 意为匹配不含英文字母的字符
\w #匹配英文字母及数字字符,等同于’[ a-zA-Z0-9 ]’,如 ‘G\w*p’ 意为G后接零个或多个英文字母或数字字符
\W #匹配非英文字母及数字字符,等同于’[ ^a-zA-Z0-9 ]’
\b #单词锁定符,如 ‘\bgrep\b’ 只匹配grep
POSIX字符
POSIX增加的特殊字符类,如 [:alnum:] 等同于a-zA-Z0-9,[[:alnum:]]等同于[a-zA-Z0-9],[:alnum:]一定要放入[]之间才有效。[:alnum:] #英文字符及数字字符
[:alpha:] #英文字符
[:digit:] #数字字符
[: graph :] #非空字符(非空格、控制字符)
[:cntrl:] #控制字符
[:punct:] #标点符号
[:space:] #所有空白字符
[:upper:] #大写英文字符
[:lower:] #小写英文字符
[:xdigit:] #十六进制数字
part 3 example:
cat hello.c | grep -n -e ^hello #查找hello.c中以hello开始的行PS:
更多的使用方法还需要进一步在实践中慢慢摸索,grep对于平时的各种搜索都能轻松实现。相关文章推荐
- msql 正则表达式
- 正则表达式
- 搜狗百度360市值齐跌:搜索引擎们陷入集体焦虑?
- 本人即将筹备败家日志,敬请期待!
- IE:使用搜索助手
- Mootools 1.2教程 正则表达式
- 批处理FINDSTR正则表达式用法实例分析
- vbs正则表达式代码
- C#正则表达式Regex类的常用匹配
- C#中利用正则表达式将人民币金额转换为大写汉字
- C#使用正则表达式实现首字母转大写的方法
- C++深度优先搜索的实现方法
- 基于文本的搜索
- php实现搜索一维数组元素并删除二维数组对应元素的方法
- 使用Sphinx对索引进行搜索
- php中看实例学正则表达式
- PHP正则表达式之定界符和原子介绍
- PHP下常用正则表达式整理
- 批处理 正则表达式(findstr) 整理