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 非单词边界
d 单个数字字符
D 单个非数字字符
w 单个单词字符(字母,数字,和_)
W 单个非单词字符
换行符
s 单个空白字符
S 单个非空白字符
回车

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的意思

原文地址:https://www.cnblogs.com/kemaswill/p/3251456.html