zoukankan      html  css  js  c++  java
  • linux grep 命令常见用法

    在 linux 系统中,有三个强大的文本分析处理工具:grep  sed  awk,其中:

    grep   用于搜索文本内容      =>     linux grep 命令常见用法

    sed    用于编辑文本内容       =>     linux sed  命令常见用法

    awk   用于处理和生成报表    =>     linux awk 命令常见用法

    grep 的工作原理是将文件内容逐行读入,然后在每一行数据中搜索符合条件的内容并打印出来

    grep 命令的使用格式如下:

    grep   “pattern”   file_name

    在文件中搜索符合样式  pattern  的内容,并打印出来

    这里的 pattern 一般是正则表达式,也可以是字符串(字符串也可以看成是一种简单的正则表达式)

    下面结合实例简单介绍 grep 命令的常见用法:

    假设文件 log.txt 的内容如下:

    running syntax check ...
    checked 100 lines,2 have errors
    error: nothing matched !
    error: cannot open the target !
    syntax check finished!

    1. 搜索出包含字符 error 的行

    grep  error  log.txt
    >>
    checked 100 lines,2 have errors
    error: nothing matched !
    error: cannot open the target !

    如果希望将搜索到的目标高亮出来,可以加上选项 “--color=auto”

    grep  --color=auto  error  log.txt
    >>
    checked 100 lines,2 have errors
    error: nothing matched !
    error: cannot open the target !

    为了方便,可以将这个选项添加到自己的 alias 文件中:

    alias  grep  "grep  --color=auto"

    2. 搜索以 error 开头的那些行

    grep  "^error"  log.txt
    >>
    error: nothing matched !
    error: cannot open the target !

    这里的 "^error" 是正则表达式, 符号 "^" 表示一行的开头

    注意正则表达式需要用双引号括起来,但是如果 pattern 是简单的字符串(比如 “error”),则可以省略双引号

    3. 统计文件 log.txt 中字符 error 出现的次数

    grep  -c  error  log.txt
    >>
    3

    注意:如果一行中有多个 error 字符,只会统计一次

    4. 搜索不包含字符串 error 的那些行

    grep  -v  error  log.txt
    >>
    running syntax check ...
    syntax check finished!

    选项 “-v ” 表示 反转搜索

    5. 在目录下的所有文件中搜索

    grep  -r  error  log

    这里的 log 是一个目录,表示在 目录 log 和 log 的子目录下的所有文件中搜索字符串 error

    6. 搜索 “在文件 A 中存在,但是在文件 B 中不存在” 的那些行

    文件 log1.txt 的内容如下:

    data[1]
    data[2]
    data[3]
    data[4]
    data[5]

    文件 log2.txt 中的内容是:

    data[1]
    data[3]
    data[4]

    假设需要搜索 “在文件 log1.txt 中存在,但是在 log2.txt 中不存在” 的那些行

    grep  -f  log2.txt  -vF  log1.txt
    >>
    data[2]
    data[5]

    这里的 -f 表示 “将文件的内容作为样式”,也就是将文件中的每一行都作为样式去搜索

    而选项 -F 表示 “将样式当作文本,而不是正则表达式”,默认情况下, grep 会将 log2.txt 中的每一行当作一个正则表达式,然后去 log1.txt 中查找是否有匹配这些正则表达式的内容,所以  "data[1]" 如果被视为正则表达式,就只能搜索到包含 “data1” 的那些行,因为正则表达式 “[1]" 就表示数字 1 ;

    所以上面这条命令就表示: 将 log2.txt 中的每一行当做常规字符串,去 log1.txt 中搜索是否有有相同的字符串,如果有,就排除掉,最后打印出 log1.txt 中剩下的行。

     

    grep 命令的用法还有很多,以上只是列举了一些常见的用法,

    如果希望深入学习,可以参考相关书籍或者直接访问 GNU grep 网站:

    http://www.gnu.org/software/grep/manual/grep.html

    |--------------------------------------|

     

     

  • 相关阅读:
    Maven入门:使用Nexus搭建Maven私服及上传下载jar包
    idea 破解转(肉测好用,测试2018.4.16)
    使用spring-boot-admin对spring-boot服务进行监控(转自牛逼的人物)
    eureka集群高可用配置,亲测成功配置(转)
    Apollo-open-capacity-platform 微服务能力开发平台 (转)
    导入数据到数据库表,报错[Err] [Row1] [Imp] 1153
    .mmap文件如何打开
    web端自动化——webdriver驱动
    web端自动化——Remote应用
    svn服务器端—管理员分配权限
  • 原文地址:https://www.cnblogs.com/xiaoxie2014/p/12917775.html
Copyright © 2011-2022 走看看