zoukankan      html  css  js  c++  java
  • Linux 命令

    grep 搜索文本文件中与指定正则表达式匹配的行

    命令格式

    grep [OPTIONS] PATTERN [FILE...]

    命令参数

    Generic Program Information

    --help
      打印帮助信息

    -V, --version
      打印版本信息

    Matcher Selection

    -E, --extended-regexp
      使用基本正则表达式(ERE)解释 PATTERN

    -F, --fixed-strings
      每个模式作为一组固定字符串对待(以新行分隔),而不作为正则表达式。

    -G, --basic-regexp
      使用基本正则表达式(BRE)解释 PATTERN

    -P, --perl-regexp
      使用 Perl 正则表达式(PCRE)解释 PATTERN

    Matching Control

    -e PATTERN, --regexp=PATTERN
      使用 PATTERN 作为匹配模式

    -f FILE, --file=FILE
      从文件获取匹配模式

    -i, --ignore-case
      忽略大小写

    -v, --invert-match
      输出不含匹配项的行

    -w, --word-regexp
      单词精确匹配

    -x, --line-regexp
      行精确匹配

    General Output Control

    -c, --count
      输出匹配项的数目

    -l, --files-with-matches
      输出包含匹配项的文件名而不是直接输出匹配行

    -L, --files-without-match
      与 -l 选项类似,输出的是包含不匹配项的文件名

    -m NUM, --max-count=NUM
      当匹配 NUM 后停止读取文件

    -o, --only-matching
      只显示匹配项而不是匹配行

    -q, --quiet, --silent
      安静模式,不显示任何信息

    -s, --no-messages
      当文件不存在或不可读时,不显示错误信息

    Output Line Prefix Control

    -b, --byte-offset
      在每个匹配行前加上该行在文件内的块号

    -H, --with-filename
      在每个匹配行前加上文件名

    -h, --no-filename
      多文件搜索时,抑制文件名输出

    -n, --line-number
      在每个匹配行前加上该行在文件内的行号

    Context Line Control

    -A NUM, --after-context=NUM
      输出匹配行及其后 NUM 行的内容

    -B NUM, --before-context=NUM
      输出匹配行及其前 NUM 行的内容

    -C NUM, -NUM, --context=NUM
      输出匹配行及其前后 NUM 行的内容

    实例

    测试文件 test.txt:

    The Zen of Python, by Tim Peters
    
    Beautiful is better than ugly
    Explicit is better than implicit
    Simple is better than complex
    Complex is better than complicated
    Flat is better than nested
    Sparse is better than dense
    Readability counts
    Special cases aren't special enough to break the rules
    Although practicality beats purity
    Errors should never pass silently
    Unless explicitly silenced
    In the face of ambiguity, refuse the temptation to guess
    There should be one-- and preferably only one --obvious way to do it
    Although that way may not be obvious at first unless you're Dutch
    Now is better than never
    Although never is often better than *right* now
    If the implementation is hard to explain, it's a bad idea
    If the implementation is easy to explain, it may be a good idea
    Namespaces are one honking great idea -- let's do more of those

     a) 输出含有 "com" 的行

    huey@huey-K42JE:~/huey/linux/cmdline$ grep com test.txt
    Simple is better than complex
    Complex is better than complicated

    b) 匹配时忽略大小写

    huey@huey-K42JE:~/huey/linux/cmdline$ grep -i com test.txt
    Simple is better than complex
    Complex is better than complicated

     c) 输出以 "complex" 开头的行,忽略大小写

    huey@huey-K42JE:~/huey/linux/cmdline$ grep -i '^complex' test.txt
    Complex is better than complicated

     d) 输出以 "idea" 结尾的行

    huey@huey-K42JE:~/huey/linux/cmdline$ grep 'idea$' test.txt
    If the implementation is hard to explain, it's a bad idea
    If the implementation is easy to explain, it may be a good idea

    e) 匹配空行

    huey@huey-K42JE:~/huey/linux/cmdline$ grep -n '^$' test.txt
    2:

    h) 输出含有 "good" 或 "bad" 的行

    huey@huey-K42JE:~/huey/linux/cmdline$ grep 'good|bad' test.txt
    If the implementation is hard to explain, it's a bad idea
    If the implementation is easy to explain, it may be a good idea
    huey@huey-K42JE:~/huey/linux/cmdline$ grep -E 'good|bad' test.txt
    If the implementation is hard to explain, it's a bad idea
    If the implementation is easy to explain, it may be a good idea

    i) 精确匹配单词 it,像 implicit、purity、purity 等这样的单词中的 it 部分是不会被匹配的

    huey@huey-K42JE:~/huey/linux/cmdline$ grep -w it test.txt
    There should be one-- and preferably only one --obvious way to do it
    If the implementation is hard to explain, it's a bad idea
    If the implementation is easy to explain, it may be a good idea

    j) 输出含有 "Python" 的行及其后 3 行

    huey@huey-K42JE:~/huey/linux/cmdline$ grep -A 3 Python test.txt
    The Zen of Python, by Tim Peters
    
    Beautiful is better than ugly
    Explicit is better than implicit

    相关命令

    egrep - 相当于 grep -E

    fgrep - 相当于 grep -F

    pgrep - 相当于 grep -P

  • 相关阅读:
    Python中利用函数装饰器实现备忘功能
    selenium之 定位以及切换frame(iframe)
    selenium之操作ChromeDriver
    设置跑的次数
    l类型转换错误ClassCastException
    代码提交失败
    【cl】Json学习
    mysql下载安装
    mysql登录基本语句
    linux 递归删除目录文件
  • 原文地址:https://www.cnblogs.com/huey/p/4436342.html
Copyright © 2011-2022 走看看