Linux基础命令(三)-grep
2018-09-18 本文已影响0人
hipeer
grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。通常grep有三种版本grep、egrep(等同于grep -E)和fgrep。
egrep为扩展的grep(等同于grep -E)
fgrep则为快速grep(固定的字符串来对文本进行搜索,不支持正则表达式的引用但是查询极为快速)。
grep是linux文本处理三剑客之一。
1. grep [option] pattern [file...]
- -i:匹配时忽略大小写
- -o: 只显示匹配到的字符串
- -v: 显示没有匹配到的所有行
- -n: 显示行号
注:使用grep匹配时需要使用双引号,防止系统报错
2. egrep [option] pattern [file...] 或 grep -E [option] pattern [file...]
egrep和grep相比取消了基本正则表达式的斜杠转义,egrep的[option] 选项参考grep
grep和egrep基本正则表达式元字符比较
字符匹配
| egrep | 说明 | grep | 说明 |
|---|---|---|---|
| . | 匹配任意字符 | . | 匹配任意字符 |
| [] | 指定范围内的任意单个字符 | [] | 指定范围内的任意单个字符 |
| [^] | 指定范围外的任意单个字符 | [^] | 指定范围外的任意单个字符 |
| [:digit:] | 匹配任意单个数字 | N/A | N/A |
| [:alpha:] | 匹配任意单个字母 | N/A | N/A |
| [:alnum:] | 匹配任意单个字母或数字 | N/A | N/A |
| [:space:] | 匹配单个空格 | N/A | N/A |
| [:punct:] | 匹配任意单个符号 | N/A | N/A |
| [:lower:] | 匹配任意单个小写字母 | N/A | N/A |
| [:upper:] | 匹配任意单个大写字母 | N/A | N/A |
注:.在[]中就代表.本身
匹配次数
| egrep | grep | 说明 |
|---|---|---|
| * | * | 匹配0次或多次 |
| + | \+ | 匹配1次或多次 |
| ? | \? | 匹配0次或一次 |
| {n} | \{n\} | 匹配n次 |
| {0,n} | \{0,n\} | 匹配0次到n次 |
| {n,m} | \{n,m\} | 匹配n次到m次 |
| {n,} | \{n,\} | 至少匹配n次 |
分组
| egrep | grep | 说明 |
|---|---|---|
| () | \(\) | 把括号中的内容当作整体处理 |
注:后向引用,\1:引用第一个左括号及与之对应的右括号之间的所有内容。\2:引用第一个左括号及与之对应的右括号之间的所有内容。\3...
或者
| egrep | grep | 说明 |
|---|---|---|
| | | | | 或者 |
锚定
| egrep | 说明 | grep | 说明 |
|---|---|---|---|
| ^ | 行首 | ^ | 行首 |
| $ | 行尾 | $ | 行尾 |
| ^$ | 空白行 | ^$ | 空白行 |
| \<,\b | 词首 | N/A | N/A |
| \>,\b | 词尾 | N/A | N/A |