zoukankan      html  css  js  c++  java
  • Linux grep

    最后修改:2020/11/8

    简介

    grep能够在每个文件中寻找匹配的模式(pattern)。

    基本格式

    grep [OPTION...] PATTERNS [FILE...]
    grep [OPTION...] -e PATTERNS ... [FILE...]
    grep [OPTION...] -f PATTERN_FILE ... [FILE...]
    

    文件列表中,使用 - 表示标准输入。建议使用/dev/fd/0或者/dev/stdin。

    命令行选项

    模式语法的选择

    • -G
      将模式当成POSIX BRE(Basic Regex Expression)正则表达式。grep默认使用此选项。

    • -E
      可以使用POSIX ERE(Extended Regex Expression)语法。
      grep -E等价于egrep

    更多关于POSIX BRE和ERE的内容:POSIX BRE&ERE

    • -F
      将模式当成一般字符串

    • -P
      使用pearl正则语法。

    匹配控制选项

    man

    • -i
      模式大小写不敏感地匹配

    • -v
      选择不匹配的行

    • -w
      之匹配含有满足模式的词的行。等价于在模式前后分别加上 \b

    输出控制

    • -c
      输出每个输入文件中匹配行的数量

    • -L
      输出不含有匹配的文件名。

    • -l
      输出含有匹配的文件名。

    • -o
      仅输出匹配行中匹配的部分,不输出整行。

    输出行前缀控制选项

    • -H
      输出文件名。当输出多个文件时默认。

    • -h
      不要输出文件名。当目标为单个文件时默认。

    • -n
      标记匹配所在行号,从1算起。

    输出行上下文控制

    • -A n
      输出匹配行之后的n行。

    • -B n
      输出匹配行之前的n行。

    • -C n
      输出匹配行及前后各n行。

    文件和目录选择

    • -r
      递归读取每个目录中的所有文件,不跟踪symbolic link。

    • -R
      递归读取每个目录中的所有文件,跟踪symbolic link。

    一些实例

    1). 寻找某个文件中的单词及其行号:

    grep -n "word" filename
    

    2). 递归输出某个目录及其子目录下含有某个模式的文件名

    grep -rl "word" directory
    

    如果想进一步对文件后缀(类型)做一些限制:

    grep -rl "word" directory | grep “.*\.c” -
    

    3). 输出(多个)文件中模式的匹配次数

    grep -r -c "word" directory
    

    另外,统计目录下个文件的行数可以使用

    grep -rc "^"
    

    4). 匹配整个单词

    -w 选项。或者使用\<, \>表示单词边界。

  • 相关阅读:
    SceneBuilder 打不开 .fxml文件,只在任务栏显示
    JDK1.6 1.7 1.8 多版本windows安装 执行命令java -version 版本不变的问题
    新手根据菜鸟教程安装docker,从No package docker-io available开始遇到的坑...
    Linux安装mysql
    用Eclipse搭建ssh框架
    前端面试之vue相关的面试题
    前端面试之闭包理解
    HTML5新规范和CSS3新特性
    vue2.0项目创建之环境变量配置
    windows下SVN服务器搭建--VisualSVN与TortoiseSVN的配置安装
  • 原文地址:https://www.cnblogs.com/wyzersblog/p/13707187.html
Copyright © 2011-2022 走看看