grep
是常用的文本处理工具之一。压缩文件可使用zgrep ,功能没有前者强大。
grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
1、正则引擎
-E, --extended-regexp 扩展正则表达式
-F, --fixed-strings, --fixed-regexp 固定字符串
-G, --basic-regexp 默认
-P, --perl-regexp 支持perl正则表式
2、常用参数
-i, --ignore-case 忽略大小写
-v, --invert-match 取不匹配行
-A NUM, --after-context=NUM 同时输出配行行的后N行
-B NUM, --before-context=NUM 同时输出配行行的前N行
-C NUM, -NUM, --context=NUM 同时输出配行行的前后N行
-q :不显示任何信息
正则表达式
1)字符匹配:
.:匹配任意单个字符
[]: 匹配指定范围的任意单个字符
[^]:匹配指定范围外的任意单个字符
[:digit:] 数字
[:lower:] 小写字母
[:upper:] 大写字母
[:alpha:] 大小写字母
[:alnum:] 数字和大小写字母
[:punct:] 标点符号
[:space:] 空白字符
2)匹配次数:用在要指定其出现的次数的字符的后面,用于限制其前面字符出现的次数;默认工作于贪婪模式
*:匹配其前面的字符任意次;0,1,多次
.*:匹配任意长度的任意字符
\?:匹配其前面的字符0或1次
\+:匹配前面的字符1次或多次
\{m\}:匹配前面的字符m次
\{m,n\}:匹配前面的字符至少m次,最多n次
3)位置锚定
^:行首锚定
$: 行尾锚定
^PATTERN$: 用于PATTERN来匹配行
^$:空白行
^[[:space:]]*$:空行或包含空白字符的行
4)单词:非特殊字符组成的连续字符(字符串)都称为单词
\<或\b:词首锚定,用于单词模式的左侧
\>或\b:词锚定,用于单词模式的右侧
\<PATTERN\>:匹配完整单词
5)分组及引用
\(\):将本个或多个字符捆绑在一起,当作一个整体进行处理
例如:\(xy\)*ab
Note:分组括号中的模式匹配到的内容会被正则表达式引擎自动记录于内部的变量中,这些变量为:
\1:模式从左侧起,第一个左括号以及与之匹配的右括号之间的模式所匹配到的字符
\2:
\3:
.....