grep (global search regular expression / 全面搜索正则表达式并把行打印出来)
是一种文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.
命令选项
grep [-acinvw] [--color=auto] [-A num] [-B num] [-C[num]] [-e pattern] [--exclude-dir=dir] pattern file
- a: 将 binary 文件以 text 文件的方式搜寻数据
- c: 计算找到 ‘搜寻字符串’ 的行数
- w: 只匹配整个单词
- i: 忽略大小写的不同,所以大小写视为相同
- n: 顺便输出行号
- v: 反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行
- l: 显示匹配到的文件名
- r: 递归搜索子路径
- –color=auto | never | always: 是否给搜索到的关键词加上颜色
- –exclude-dir: 指定搜索不包含的路径
- A num: 打印匹配行前 num 行内容
- B num: 打印匹配行前 num 行内容
- C num: 打印匹配行前后 num 行内容
- e PATTERN: 指定多个模式
- pattern:搜索模式
- file: filename | * 搜索指定文件或所有文件
常用别名
alias grep='grep -n --color=auto
使用示例
显示行号
grep -n --color=auto root /etc/passwd
grep -n --color=auto -C2 root /etc/passwd
反向搜索
grep -n --color=auto -v root /etc/passwd
找出空白行
grep -n '^$' ~/.ssh/known_hosts
搜索所有文件内容
grep 'PATTERN' *
递归搜索当前目录及其子目录
grep -r 'PATTERN' *
grep ‘PATTERN’ d*
搜索当前目录及其子目录所有文件,但是不显示匹配的行,只显示匹配的文件
grep -l -r 'PATTERN' *
grep 与正则
t[ae]st
:[]
代表一个字符[^g]oo
:[^}
反向选择[a-z]
:a-z
连续字符^ $
: 行首与行尾.
: 通配一个字符*
: 重复前一个字符,0次以上{n,m}
: 限定连续范围为n 到 m次,shell 中{
与}
符号需要转义,示例grep -n 'o\{2\}' filename
参考