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键 退出当前模式

  Esc键Esc键 总是返回到命令模式

模式转换

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 09:37
下一篇 2016-08-11 09:37

相关推荐

  • centos 6 配置bind

    BIND BIND(Berkeley Internet Name Daemon)是现今互联网上最常使用的DNS服务器软件,使用BIND作为服务器软件的DNS服务器约占所有DNS服务器的九成[。BIND现在由互联网系统协会(Internet Systems Consortium)负责开发与维护。 DNS是什么 DNS(Domain…

    Linux干货 2016-12-19
  • 第二天作业

    1、echo 查闪烁,下划,颜色    echo -e "\033[31;5;1m*******\033[0m\n \033[32;5;1m*****\033[0m\n  \033[33;5;1m***\033[0m\n   \033[34;5;1m*\033[0m" 2、scr…

    Linux干货 2016-07-26
  • C++的std::string的“读时也拷贝”技术!

    C++的std::string的读时也拷贝技术! 嘿嘿,你没有看错,我也没有写错,是读时也拷贝技术。什么?我的错,你之前听说写过时才拷贝,嗯,不错的确有这门技术,英文是Copy On Write,简写就是COW,非常’牛’!那么我们就来看看这个’牛’技术的效果吧。 我们先编写一段程序 #include <string> #include…

    Linux干货 2015-04-03
  • Bash Shell脚本基础-变量类型-位置变量

    Bash Shell脚本基础–变量类型–位置变量   §·bash shell脚本编程概述: 1 §·bash shell脚本中的变量 2     *什么是变量 2     *变量的类型 2     *ba…

    Linux干货 2016-08-12
  • 关于HISTCONTROL命令及对快捷键Ctrl+o命令的影响

            在linux中环境变量HISTCONTROL可以控制历史的记录方式。         HISTCONTROL有以下的选项:         &n…

    Linux干货 2017-02-18
  • FHS文件系统各目录功能

    FHS文件系统各目录功能 摘要: 本文主要介绍Linux的文件组织目录结构。 一、Linux 目录结构 在讲 Linux 目录结构之前,你首先要清楚一点东西,那就是 Linux 的目录与 Windows 的目录的区别,或许对于一般操作上的感受来说没有多大不同,但从它们的实现机制来说是完全不同的。 一种不同是体现在目录与存储介质(磁盘,内存,DVD 等)的关系…

    Linux干货 2016-10-18

评论列表(1条)

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

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