8-8 处理文本工具sed及vim文本编辑工具

处理文本工具sed及vim文本编辑工具

Sed:

  sed是一种在线编辑器、行编辑器,一次处理一行内容。在处理时,把当前处理的行存储在临时缓冲区中,该缓冲区称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完毕后,把缓冲区的内容送到标准输出;然后紧接着处理下一行,重复完成相同的操作,直到文件末尾;sed处理的整个过程中,对象文件中的内容没有被改变,除非使用重定向来存储处理后的结果。sed主要用来自动编辑一个或多个文件,简化对文件的反复操作过程。

   功能:数据的替换、删除、新增等,这里的数据可以是一些关键字,也可以是一些特定的行。

语法结构:

   sed [OPTION]…{script}[input-file]…[actions]

      -n:静默模式

      -e:多点编辑

      -f /PATH/TO/SCRIPT_FILE:从指定文件中读取脚本并运行

      -r:支持扩展正则表达式

      -i: 直接修改源文件

Sed的地址定界

   #:表示数字,指定行

   $:最后一行

   #,#:从#行开始到#

   #,+#:从#行开始,到加#

   1~2:奇数行

   2~2:偶数行

编辑命令:

   d:删除模式空间匹配的行

   p:显示模式空间中的内容

   a \text:在行后面追加文本;支持使用\n 实现多行追加

   i \text:在行前面插入文本;支持使用\n 实现多行插入

   c \text:用text替换匹配到的行

   w /path/to/somefile:保存模式匹配的行至指定文件

   r /path/from/somefile:读取指定文件的文本至模式空间中匹配到的行后合并

   =:为模式空间中的行打印行号

   !: 模式空间中匹配行取反处理

   s/regexp/replacement/:替换由regexp所匹配到的内容为replacement,对于替换有两个后选项:g:全局替换

        i:不区分大小写

        p:显示替换成功的行

高级编辑命令

    h:把模式空间中的内容覆盖至保持空间中

    H:把模式空间中的内容追加至保持空间中

    g:从保持空间取出数据覆盖至模式空间

    G:从保持空间取出内容追加至模式空间

    x:  把模式空间中的内容与保持空间中的内容进行互换

    n:  读取匹配到的行的下一行至模式空间

    N:追加匹配到的行的下一行至模式空间,追加在模式空间中原有内容的后面

    d:  删除模式空间中的行

D :删除多行模式空间中的首行

1. 在特定行号后插入一行
      要在第25行以后插入一行新的内容xiaoming(插入内容将变成第26行),写法:
               # sed -i '25axiaoming' aaa.txt
               # sed -i '25a\xiaoming' aaa.txt       没有特殊字符时,加与不加转义符,效果都一样
     要在第25行插入一行新的内容 /usr/local/php.ini,写法:
                 # sed -i '25a/usr/local/php.ini' aaa.txt      需要加入转义符

2. 彻底替换某一行内容
     要把第3行的内容彻底替换为xiaoming*,写法:
      # sed -i "3s/.*/xiaoming */" /etc/ppp/chap-secrets

vim编辑器:

打开文件  # vim  [OPTION]… FILE…

       +#:  打开文件后,直接让光标处于第# 行的行首

       +/ PATTERN :打开文件后,直接让光标处于第一个被PATTERN 匹配到的行的行首

       vim + file  直接打开file, 光标在 最后一行

       vim -b file  二进制方式打开文件

       vim -d file1 file2… 比较多个文件

       vim -m file 只读打开文件

  ex file 或 或 vim e 直接进入ex 模式

   如果该文件存在,文件被打开并显示内容

   如果该文件不存在,当编辑后第一次存盘时创建它

 

 

vim :一个模式编辑器

  击键行为是依赖于 vim的 的  的“模式”

  三种主要模式:

        命令模式(默认):移动光标,剪切/ 粘贴文本

        插入(编辑)模式:修改文本

        扩展命令模式 :保存,退出等

  Esc键 退出当前模式

  EscEsc键 总是返回到命令模式

模式转换

1. Esc键:从输入模式转换为编辑模式

2. 从编辑模式–>输入模式,可使用:

       i:在光标所在处的前方转换为输入模式

           a:在光标所在处的后方转换为输入模式

           o:在光标所在处的下方新建一个空行并转换为输入模式

           I:在光标所在行的行首输入

           A:在光标所在行的行尾输入

           O:在光标所在行的上方新建一个空白行

3. 从编辑模式–>扩展模式:直接在窗口输入冒号(:)即可在窗口的左下方显示冒号

4. 从扩展模式–>编辑模式:敲击Esc

5. 锁定和解锁:CTRL+s,Ctrl+q

 

 关闭文件

    扩展模式:

         :q  退出

         :q!  强制退出,丢弃做出的修改

         :wq  保存退出

         :x  保存退出

   命令模式

        ZZ:保存退出

        ZQ:不保存退出

扩展模式

   按“: ”进入Ex 模式

   创建一个命令提示符:, 处于底部的屏幕左侧

       w  写(存)磁盘文件

       wq  写入并退出

       x  写入并退出(不推荐)

       q 退出

       q!不存盘退出,即使更改都将丢失

       r filename  读文件内容到当前文件中

       w filename 将当前文件内容写入另一个文件

 

命令模式的光标跳转

   字符间跳转:h: l: j: k:

        #COMMAND :跳转由# 指定的个数的字符;

   单词间跳转:

        w:下一个单词的词首

        e:当前或下一单词的词尾

        b:当前或前一个单词的词首

        #COMMAND:由# 指定一次跳转的单词数

   当前页跳转:

        H:页首 M:页中间行 L:页底

   行首行尾跳转:

        ^:跳转至行首的第一个非空白字符;

        0:跳转至行首

        $:跳转至行尾

   行间移动:

        #G:直接跳转至#

        G:最后一行

        1G, gg:第一行

   句间移动:

        ) :下一句     ( :上一句

   段落间移动:

        }:下一段      {:上一段

  

   Ctrl+f:向文件尾部翻一屏

   Ctrl+b:向文件首部翻一屏

   Ctrl+d:向文件尾部翻半屏

   Ctrl+u:向文件首部翻半屏

 

Vim的编辑命令

     x:删除光标处的字符;

     #x:删除光标处起始的# 个字符

     xp:交换光标所在处的字符及其后面字符的位置

     ~: 转换大小写

 

     r:替换光标所在处的字符

     R:切换成REPLACE 模式

    

     d:删除命令,可结合光标跳转字符,删除跳转范围内的字符

     d$:删除到行尾

     d^:删除到非空行首

     d0:删除到行首

     #COMMAND

    dd:删除光标所在的行

    #dd :多行删除

    D:从当前光标位置一直删除到行尾,留空行,等同于d$

 

     y:  复制,行为相似于d 命令

     y$  y0  y^  ye  yw  yb同上

     #COMMAND

     Y :yy:复制行

     #yy:  复制多行

 

    p:缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面

P:缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面

 

     c:修改后切换成插入模式

 命令模式 –>  插入模式

w b e $ 0 ^

所谓修改就是先删除,再转换为输入模式

    cc:删除当前行并输入新内容

    C:删除当前光标到行尾,并切换成插入模式

原创文章,作者:Dadi,如若转载,请注明出处:http://www.178linux.com/32984

(0)
DadiDadi
上一篇 2016-08-11
下一篇 2016-08-11

相关推荐

  • LNMP安装过程中出现的问题及解决方法

    一、背景介绍    操作系统版本:centos6.8    nginx版本:nginx-1.10.2            mysql版本:mysql5.7.16    php版本:php5.6.28   由于mysql和php的…

    Linux干货 2016-11-23
  • 解决线上服务器httpd无法反向代理resin的解决方法

    一、简述   前两天有后端的小伙伴跟我反映说使用httpd反向代理resin时遇到的问题,在做网站管理后台的时候,发起的http的put,delete的请求无法经由resin传递到后面的dbserver。当时的第一反应就是httpd的反向代理设置出现的问题,但是关于httpd反代resin的内容在网上机会搜索不到。于是,查看httpd反代tomca…

    Linux干货 2017-01-11
  • N25-第四周博客

      复制/etc/ske1目录为/home/tuser1,要求/home/tuser1及其内部文件的属组合其他用户均没有任何访问权限。            2,编辑/etc/group文件,添加组hadoop.。    &nbs…

    Linux干货 2016-12-22
  • Yellow Dog! COMMAND && source

    linux程序包管理之yum        yum:之前命名为:yellow dog ,后来因为及其好用,很多发行版都以此为默认rpm程序前端管理工具,故此更名为:yellowdog update modifier,更牛的还有一个基于redhat的二次发行版也叫yellow dog 功能:…

    Linux干货 2016-08-21
  • php 设计模式-数据映射模式(应用程序与数据库交互模式)

    前面提到的设计模式大大提高了代码的可读性与可维护性。然而,在WEB应用设计与开发中一个基本的需求与挑战:数据库应用,这些设计模式都没有涉及到。数据映射模式使您能更好的组织你的应用程序与数据库进行交互。 下面我将用实际代码说明,如果一个表发生变动。我们要修改客户端代码就可以了。特别是游戏项目,需求经常可能会经常变动。修改表结构,可能引起大片代码的改动。 首先我…

    Linux干货 2015-04-07
  • N25第五周总结:程序包管理

    程序包管理:rpm、yum、编译详解 rpm详解: 一:大纲        1、什么是rpm        2、为什么要使用rpm        3、rpm能实现什么功能 &nbs…

    Linux干货 2017-01-10

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-12 11:59

    文章整体架构清晰,层次分明,如果能理论结合实际会更好哦。