grep
-
作用:文本搜索工具,根据用户指定的“模式(过滤条件)”对目标文本逐行进行匹配检查;打印匹配到的行;
- 模式:由正则表达式的元字符及文本字符所编写出的过滤条件;
语法结构:
-
grep [OPTIONS] PATTERN [FILE…] PATTERN 模式
-
grep [OPTIONS ] [-e PATTERN | -f FILE] [FILE…]
命令选项:
- –color=auto:对匹配到的文本着色后高亮显示;
- -i:ignorecase,忽略字符的大小写;
- -o:仅显示匹配到的字符串本身;
- -v, --invert-match:显示不能被模式匹配到的行;
- -E:支持使用扩展的正则表达式元字符;
- -q, --quiet, --silent:静默模式,即不输出任何信息;
- -n,显示行号
- -A #:after, 后#行
- -B #:before,前#行
- -C #:context,前后各#行
基本正则表达式元字符:
1、字符匹配:
-
. :匹配任意单个字符; 类似glob中的?
-
[]:匹配指定范围内的任意单个字符;
-
[^]:匹配指定范围外的任意单个字符; 脱字符
-
[:digit:]、数字[:lower:]、小写字母[:upper:]、大写字母[:alpha:]所有字母、[:alnum:]数字和字母、[:punct:]所有标点符号、[:space:]空格
2、匹配次数:
用于要指定出现的次数的字符后面,用来限制其前面字符出现的次数
grep “r[[:alpha:]][[:alpha:]]t” /etc/passwd rt中间匹配两个字母
-
*:匹配其前面的字符任意次;0,1,多次
-
.*:匹配任意长度的任意字符
-
?:匹配其前面的字符0次或1次;即其前面的字符是可有可无的;
-
+:匹配其前面的字符1次或多次;即其面的字符要出现至少1次;
字符m次; -
{m,n}:匹配其前面的字符至少m次,至多n次;
-
{0,n} :至多n次
-
{m,} :至少m次
3、位置锚定:
-
^:行首锚定;用于模式的最左侧; 脱字符
Grep “^root” /etc/passwd -
-$:行尾锚定;用于模式的最右侧
-
^PATTERN$:用于PATTERN来匹配整行;
-
^$:空白行;
-
1*$ :空行或包含空白字符的行;
-
< 或\b:词首锚定,用于单词模式的左侧;
-
> 或\b:词尾锚定,用于单词模式的右侧;
-
<PATTERN>:匹配完整单词;
练习:
1、显示/etc/passwd文件中不以/bin/bash结尾的行;
2、找出/etc/passwd文件中的两位数或三位数;
4、分组及引用
- ():将一个或多个字符捆绑在一起,当作一个整体进行处理;
- (xy)*ab 命令行中括号有特殊意义所以用转义符\
Note:分组括号中的模式匹配 到的内容会被正则表达式引擎自动记录于内部的变量中,这些变量为:
- \1:模式从左侧起,第一个左括号以及与之匹配的右括号之间的模式所匹配到的字符;
- \2:模式从左侧起,第二个左括号以及与之匹配的右括号之间的模式所匹配到的字符;
5、或者|
a|b在|两边a和b是独立的
-
[:space:] ↩︎