Grep学习笔记

Grep(Global search Regular Expression and Print out the line)是一种强大的文本搜索工具。

1. 正则表达式的基本组成部分

正则表达式 描述
^ 行首标记
$ 行尾标记
. 任意一个字符
[] 包含在[]中的任意一个字符
[^] 不包含在[]中的任意一个字符
[-] []指定范围内的任意一个字符
? 匹配之前的字符1次或0次
+ 匹配之前的字符1次或多次
* 匹配之前的字符0次或多次
() 创建一个用于匹配的字符串
{n} 匹配之前的项n次
{n,}

匹配之前的项至少n次

{n,m} 匹配之前的项n-m次
| 匹配|两边的任意一项
\ 对之前的字符进行转义,不转义则代表字符本身

2. POSIX字符类相当于是某些字符的集合。

POSIX字符类 描述
[:alnum:] 字母与数字字符
[:alpha:] 字母字符(包括大小写)
[:blank:] 空格与制表符
[:digit:] 数字字符
[:lower:] 小写字母字符
[:upper:] 大写字母字符
[:punct:] 标点符号
[:space:] 所有空白字符(包含换行,回车等)

 

  在使用POSIX字符类时,要用[]括起来,比如,要匹配三个数字,则可以写成[[:digit:]]\{3\}

3. 元字符是perl风格的正则表达式。

正则表达式 描述
\b 单词边界
\B 非单词边界
\d 单个数字字符
\D 单个非数字字符
\w 单个单词字符(字母,数字,和_)
\W 单个非单词字符
\n 换行符
\s 单个空白字符
\S 单个非空白字符
\r 回车

 

4. 常用命令选项

  -e或者-E  使用egrep(目测mac的grep默认就是egrep?,待验证), 匹配多个正则表达式: grep -e 'pattern1' -e 'pattern2', 只要匹配其中的一个正则表达式就可以, 如果要同时匹配两个正则表达式, 可以使用grep -e 'pattern1' file | grep -e 'pattern2'

  -o 只输出匹配部分

  --color  重点标记匹配部分

  -v 只输出不匹配的行

  -c 统计匹配的行的个数, 如果想统计匹配的字段数, 可以用grep 'pattern' -o | wc -l

  -n 打印出匹配的行数(第几行)

  -b 打印匹配部分的字节或字符偏移, 可以与-o搭配使用

  -l 当grep多个文件时, 显示包含匹配项的文件名

  -L 当grep多个文件时,显示不包含匹配项的文件名

  -R 在目录中递归搜索文件, 可以查找哪些文本出现在哪些源代码文件中

  -i 忽略大小写

  -q 静默模式, 不会向标准输出打印任何输出, 仅仅执行命令, 根据命令执行成功与否返回退出状态

  -A n 返回匹配行及其之后的n行, A目测是After的意思

  -B n 返回匹配行及其之前的n行, B目测是Before的意思

  -C n 返回匹配行及其之前和之后的n行, C目测是context的意思

posted on 2013-08-19 16:19  潘的博客  阅读(873)  评论(0编辑  收藏  举报

导航