• Linux —— 查找与替换


    Linux —— 查找与替换

    文本查找:   

    grep, egrep, fgrep
       
        grep:根据基本正则表达式定义的模式搜索文档,并将符合模式的文本行显示出来
            注意:搜索时属于部分搜索,只要某一行有某一部分符合模式,就会被显示出来
            模式:pattern,文本字符和正则表达式的元字符组合而成的匹配条件
        grep 选项 模式 文件

        选项:
        -i:忽略大小写

        linlin@ubuntu:~/linlin/test$ cat exp.txt 
        I have a pen
        I like to eat apple
        The HHHHH
        the Hhhhh
        linlin@ubuntu:~/linlin/test$ grep -i hhh exp.txt 
        The HHHHH
        the Hhhhh

      --color:高亮显示
      -v:显示没有被模式匹配的行

      linlin@ubuntu:~/linlin/test$ grep -v hhh exp.txt 
      I have a pen
      I like to eat apple
      The HHHHH

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

      linlin@ubuntu:~/linlin/test$ grep -o hhh exp.txt 
      hhh

      -E:扩展正则表达式,等于 egrep
      -F:使用固定字符串进行匹配,等于 fgrep
      
      egrep:等于 grep -E
      
      fgrep:不支持正则表达式,但搜索速度更快

    文本替换   

    sed:流编辑器(Stream Editor),以批处理的方式而不是交互的方式来编辑文件
           它是文本处理中非常中的工具,能够完美的配合正则表达式使用。处理时,把当前处理的行存储
           在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处
           理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内
           容并没有改变。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

      模式空间:在内存中
      
      语法格式:sed [选项] '地址(对哪些行进行处理)命令' FILE(s)

      常用选项:

      -n:静默模式,不再默认显示模式空间内的内容
      -i:直接修改原文件
      -e  脚本  -e 脚本……:使用多个脚本
      -f  /文件/to/脚本/:指定一个文件,文件每一行都是脚本(地址,命令)
      -r:使用扩展正则表达式

      表示:
      1.地址:起始行,结束行
      例如,1,100
      2.命令:使用正则表达式指定的模式
      3.模式1,模式2  表示第一次被模式1匹配到的行开始到第一次被模式2匹配到的行结束,这中间的所有行
      4.行数,处理指定的行
        $表示最后一行,$-n表示倒数第n+1行
      5.起始行,+n  
      表示从起始行与其开始向后的n行,共n+1行

      命令:

      a 在当前行下面插入文本。
      i 在当前行上面插入文本。
      c 把选定的行改为新的文本。
      d 删除,删除选择的行。
      D 删除模板块的第一行。
      s 替换指定字符
      h 拷贝模板块的内容到内存中的缓冲区。
      H 追加模板块的内容到内存中的缓冲区。
      g 获得内存缓冲区的内容,并替代当前模板块中的文本。
      G 获得内存缓冲区的内容,并追加到当前模板块文本的后面。
      l 列表不能打印字符的清单。
      n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。
      N 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。
      p 打印模板块的行。
      P(大写) 打印模板块的第一行。
      q 退出Sed。
      b lable 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾。
      r file 从file中读行。
      t label if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
      T label 错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
      w file 写并追加模板块到file末尾。  
      W file 写并追加模板块的第一行到file末尾。  
      ! 表示后面的命令对所有没有被选定的行发生作用。  
      = 打印当前行号码。  
      # 把注释扩展到下一个换行符以前。  

      s/模式/字符串/修饰符:查找并替换,将每一行中能被模式匹配到的字符串转换成指定字符串,默认只替换每一行中第一

      次被模式匹配到的字符串

      修饰符

      g:全局替换
      i:忽略字符大小写
      s后面的分隔符不一定需要为,也可以为其他内容,但每个分隔符需要一样,这样可以保证对文本内容中含有分隔符字符
      s\,s###
      (),12……后向引用
      &:引用模式匹配到的整个串,即表示模式匹配到的内容
      -n选项 与 p命令一起使用,表示只显示匹配到的行
      root@ubuntu:/home/linlin/linlin/shell# sed -n 's/root/ROOT/pg' /etc/passwd
      ROOT:x:0:0:ROOT:/ROOT:/bin/bash

        
        

  • 相关阅读:
    在Bootstrap开发框架中使用Grid++报表
    在Winform开发中使用Grid++报表
    客户关系管理系统中实现对客户信息标记颜色的处理
    企业微信和后台管理系统的结合管理(2)---创建企业微信应用并配置
    企业微信和后台管理系统的结合管理(1)---各个系统之间的关系和协同。
    基于Metronic的Bootstrap开发框架--资产编码打印处理
    企业微信发送应用消息的实现
    在后台业务管理系统中使用Autofac实现微信接口的处理
    企业微信支付的发送红包及相关接口使用
    开发框架数据库配置的几种应用场景
  • 原文地址:https://www.cnblogs.com/lnlin/p/6963929.html
Copyright © 2020-2023  润新知