美文网首页程序员
Linux 命令 - grep

Linux 命令 - grep

作者: 一名普通用户 | 来源:发表于2018-03-01 13:31 被阅读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》文集

    相关文章

      网友评论

        本文标题:Linux 命令 - grep

        本文链接:https://www.haomeiwen.com/subject/lhugxftx.html