zoukankan      html  css  js  c++  java
  • grep 命令 --在文件中搜索文本工具

    grep命令   

      

    grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

    Linux grep 命令用于查找文件里符合条件的字符串

    语法

    grep [-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]

    SYNOPSIS
    grep [OPTIONS] PATTERN [FILE...]
    grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

    选项

    常用选项:

      -A  n:显示匹配到的字符串所在的行及其后n行,after

      -B  n:显示匹配到的字符串所在的行及其前n行,before

      -C  n:显示匹配到的字符串所在的行及其前后各n行,context

      -E :开启扩展(Extend)的正则表达式。

      -i :忽略大小写(ignore case)。

      -v :反过来(invert),只打印没有匹配的,而匹配的反而不打印。

      -n :显示行号

      -w :被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有liker,而我搜寻的只是like,就可以使用-w选项来避免匹配liker

      -c :显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到。

      -o :只显示被模式匹配到的字符串。

      --color :将匹配到的内容以颜色高亮显示。

    grep 命令常见用法

    • 在文件中搜索一个单词,命令会返回一个包含“match_pattern”的文本行:
    grep match_pattern file_name
    grep "match_pattern" file_name

    eg:

    grep then *.sh
    c.sh:then 
    my.sh:then
    my.sh:cho 'equality' fi printf 'wwww' a=10 if [[ $a = 10 ]] then
    • 在多个文件中查找
    grep math_pattern file_1 file_2  ...
    • 输出除之外的所有行 -v 选项:
    grep -v "match_pattern" file_name
    • 除了显示符合范本样式的那一行之外,并显示该行之后的内容
    (base) [root@localhost Tana]# grep -A3  then my.sh
    then
    cho 'equality' fi printf 'wwww' a=10 if [[ $a = 10 ]] then
    echo 'hello'
    else
    echo 'nnnn'
    • 除了显示符合范本样式的那一列之外,并显示该列之前后的内容
    (base) [root@localhost Tana]# grep -C3  then my.sh
    #!/bin/bash a=5 b=5
    if (( a=b ))
    then
    cho 'equality' fi printf 'wwww' a=10 if [[ $a = 10 ]] then
    echo 'hello'
    else
    echo 'nnnn'
    • 标记匹配颜色 --color=auto 选项:
    grep "match_pattern" file_name --color=auto
    • 使用正则表达式 -E 选项:
    grep -E "[1-9]+"egrep "[1-9]+"
    • 只输出文件中匹配到的部分 -o 选项
    (base) [root@localhost Tana]# nvdimm_regread 0 0 0x60  |grep -o -E " [0-9]x[A-Z0-9]*"
     0xA5
    (base) [root@localhost Tana]# nvdimm_regread 0 0 0x60
    dimm#0, page:#0:reg#60 = 0xA5
    • 输出包含匹配字符串的行数 -n 选项:
      (base) [root@localhost Tana]# grep -n then   my.sh
      3:then
      4:cho 'equality' fi printf 'wwww' a=10 if [[ $a = 10 ]] then

      grep 递归搜索文件

    • 在多级目录中对文本进行递归搜索:
      (base) [root@localhost Tana]# grep  -r -n  then .
      ./c.sh:5:then 
      ./my.sh:3:then
      ./my.sh:4:cho 'equality' fi printf 'wwww' a=10 if [[ $a = 10 ]] then
      
      #. 表示当前目录

      模式匹配部分参考文档

    • grep 模式匹配部分
  • 相关阅读:
    vue-cli-service: command not found
    parted 大容量硬盘分区 格式化
    RAC集群安装错误集合
    印象笔记 Windows 客户端“未响应”怎么办?
    split,splice,slice 三者的用法
    JQuery 2.0.3 源码结构
    数据库字段备注信息声明语法 CDL (Comment Declaration Language)
    mysql底层原理解析(一)之日志
    ES底层原理解析
    aspnetCore 3.1网站部署到IIS
  • 原文地址:https://www.cnblogs.com/yan-2010/p/14283225.html
Copyright © 2011-2022 走看看