grep 文本搜索

来源:互联网 发布:ipad游戏大厅网络异常 编辑:程序博客网 时间:2024/06/16 22:11

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' *

搜索以 d 开头的所有文件

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

参考

  1. 博客园 grep
  2. grep 命令总结
  3. gun man
  4. 手册中文
0 0
原创粉丝点击