Linux命令 - grep

来源:互联网 发布:知乎 徐达 编辑:程序博客网 时间:2024/06/06 01:26

Linux命令 - grep

搜索输入文件,查找与指定的pattern(s)匹配的内容并输出到标准输入

用法

grep [-abcdDEFGHhIiJLlmnOopqRSsUVvwxZ] [-A num] [-B num] [-C[num]]          [-e pattern] [-f file] [--binary-files=value] [--color[=when]]          [--colour[=when]] [--context[=num]] [--label] [--line-buffered]          [--null] [pattern] [file ...]

选项

  • -A num, –after-context=num
    • 输出匹配行之后num行
  • -B num, –before-context=num
    • 输出匹配行之后num行
  • -C [num, –context=num]
    • 输出匹配行之前和之后num行。num默认为2,等同于 -A 2 -B 2注:选项和参数之间可以没有空格
  • -c, –count
    • 限制输出的匹配行的数量
  • –colour=[when, –color=[when]]
    • 给输出中与pattern匹配的内容标记颜色。颜色值保存在GREP_COLOR环境变量中。when可取'never''always''auto'
  • -E, –extended-regexp
    • 将pattern作为扩展的正则表达式来解释
  • -e pattern, –regexp=pattern
    • 可用来指定多个搜索的pattern,输入行与其中任意一个pattern匹配就会被输出
  • –exclude filename_pattern
    • 不搜索与给定的filename_pattern相匹配的文件。注意:--exclude的优先级高于--include
  • –exclude-dir dir_pattern
    • 如果指定了-R选项,该选项用来指定不进行搜索的文件夹。注意:--exclude-dir的优先级高于--include-dir
  • -F, –fixed-strings
    • 将pattern作为固定字符串来进行匹配
  • -f file, –file=file
    • 从文件中读取pattern(s), 文件中每行为一个pattern
  • -G, –basic-regexp
    • 将pattern作为标准的正则表达式进行解释
  • -H
    • 在每行输出的头部添加匹配行所在的文件名
  • -h, –no-filename
    • 与-H相反,不输出文件名
  • -i, –ignore-case
    • 匹配pattern的时候,不区分大小写。grep默认区分大小写
  • –include
    • 只对与给定文件名pattern相匹配的文件进行搜索。文件名匹配可匹配文件全路径名和文件名
  • –include-dir
    • 只对与给定文件夹pattern相匹配的文件夹进行搜索
  • -L, –files-without-match
    • 只输出不包含匹配行的文件名,不输出匹配行,每个文件名只打印一次
  • -l, –files-with-match
    • 只输出包含匹配行的文件名,每个文件名只打印一次
  • -m num, –max-count=num
    • 在文件中找到num个匹配行之后就停止搜索该文件,开始搜索下一个文件
  • -n, –line-number
    • 在输出行的开头添加该匹配行在文件中的行号,行号从1开始
  • -o, –only-matching
    • 只打印匹配行的匹配内容
  • -q, –quiet, –silent
    • 安静模式,一旦搜索到文件中有匹配就停止搜索该文件,开始搜索下一个文件。降低搜索成本。
  • -R, -r, –recursive
    • 递归搜索文件夹的子目录
  • -s, –no-message
    • 静音模式:忽略不存在的文件和不可读的文件。
  • -v, –invert-match
    • 反相匹配,选择不包含匹配内容的行
  • -w, –word-regexp
    • 将pattern作为一个词的匹配对输入行进行词匹配
  • -x, –line-regexp
    • 将pattern作为一行的匹配对输入行进行整行匹配

EXAMPLES

  1. 查找文件中出现的“foo”并输出前后5行的内容

    $ grep -C 5 "foo" myfile
  2. 查找文件中不包含“foo”或者“bar”的行

    $ grep -v -e 'foo' -e 'bar' myfile
  3. 查找包含“foo”或者“Foo”的行,输出文件名

    $ find ./ -type f -exec grep -l "foo" {} \;
0 0
原创粉丝点击