程序员

Linux 命令 - grep

2018-03-01  本文已影响0人  一名普通用户

有段时间的笔记了,发出来与大家分享

基本

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\}

其他

《Linux 命令 - find》

来自《Linux》文集

上一篇 下一篇

猜你喜欢

热点阅读