有段时间的笔记了,发出来与大家分享
基本
grep [option] pattern file
参数
[N] 表示数字
参数 | 含义 |
---|---|
-A [N] --after-context=[N] | 多显示符合条件的 后 几行 |
-B [N] --before-context=[N] | 多显示符合条件的 前 几行 |
-c --count | 显示计算符合模式的行数。 |
-C [N] --context=[nN] -[N] | 多显示该行之前后的内容。 |
-d [recurse | read | skip] | 查找的是文件夹而非文件时的操作,recurse 递归全部文件 |
-e | 指定模式,可以保护容易与参数混淆的模式,如 grep -e -e file |
-E | 使用拓展的模式 egrep |
-f [文件名] | 指定模式文件,适合有多个模式时 |
-h --no-filename | 不显示文件名 |
-H --with-filename | 显示文件名(默认显示) |
-i --ignore-case | 忽略大小写 |
-l --file-with-matches | 显示符合模式的文件的名称 |
-L --files-without-match | 显示不符合模式的文件的名称 |
-n --line-number | 显示行号 |
-q --quiet --silent | 不显示任何结果(根据返回的状态判断结果) |
-r --recursive | 同 -d recurse |
-s --no-messages | 不显示错误信息。 |
-v --revert-match | 显示不符合模式的所有行的内容 |
-V --version | 显示版本 |
-w --word-regexp | 仅选择能精确匹配整个单词的行 |
-x --line-regexp | 仅选择能精确匹配整行内容的行 |
-y | 同 -i 忽略大小写 |
中文翻译 man 相关部分,链接
英文就直接 man grep 吧
模式
建议用引号包裹
表达式 | 含义(要搜索前四个符号都要加斜杠,. 就要\. ) |
---|---|
^ | 开始 |
$ | 结束 |
. | 任意一个非换行字符 |
* | 前一个字符表达的意思的一个或多个 |
.* | 任意字符 |
[] | 范围内 |
[^] | 范围外 |
\w | 大小写字母和数字 = [A-Za-z0-9]中文也行 |
\W | 非字母数字,[^A-Za-z0-9]
|
\b | 锁定,出现在前就前面不允许出现其他内容,前后都有等同与-w |
\< |
锁定单词的开始,同\b,与其混用会错 |
\> |
锁定单词的结束,同\b,与其混用会错 |
x\{m\} |
x 出现正好 m 次 |
x\{m,\} |
x 出现至少 m 次 |
x\{m,n\} |
x 出现 m~n 次 |
表达式(模式串整体要多加一层[]) | 含义 |
---|---|
[:alnum:] | 文字数字 |
[:alpha:] | 文字 |
[:digit:] | 数字 |
[:xdigit:] | 十六进制数字(0-9,a-f,A-F) |
[:graph:] | 非空字符(非空格、控制字符) |
[:lower:] | 小写字符 |
[:upper:] | 大写字符 |
[:cntrl:] | 控制字符\t 之类的 |
[:print:] | 非空字符(包括空格等可以打印出来的) |
[:punct:] | 标点符号 |
[:space:] | 所有空白字符(新行,空格,制表符) |
egrep
拓展了模式串表达的 grep
参数 | 含义 | ||
---|---|---|---|
+ |
匹配一个或者多个先前的字符 | ||
? | 匹配0个或者多个先前字符. | ||
```a | b | c``` | 匹配a或b或c |
() | 字符组, 如: a(t | ||
(..)(..)\1\2 | 模板匹配. \1代表前面第一个模板, \2代第二个括弧里面的模板. | ||
x{m,n} | =x\{m,n\}
|
其他
网友评论