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

相关推荐

  • Linux常用命令使用方法

    下面以一些常用的Linux命令为例讲解一下Linux命令的使用方法。 1.  ifconfig – 配置网络接口 | 对象 | 参数 | 含义 || —— | —— | —— |网卡名 | / | 查看指定网卡IP的地址,不指定默认查看所有网卡地址网卡名 | up …

    Linux干货 2017-09-01
  • 源码安装

    1.连接教室yum源: [root@localhost ~]#lftp 10.1.0.1 2.进入httpd目录下: [root@localhost ~]#lftp10.1.0.1:/pub/Sources/sources/httpd> ls 3.下载安装包: [root@localhost ~]#lftp10.1.0.1:/pub/Sources/s…

    Linux干货 2016-09-19
  • Linux基础学习总结(五)

    1、显示当前系统上root、fedora或user1用户的默认shell; grep -E ‘^(root|fedora|user1)\>’ /etc/passwd | awk -F ‘:’ ‘{print $7}’ 2、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello(); grep -E ‘…

    Linux干货 2016-10-20
  • Linux文件管理相关命令、bash特性及元数据

    一、 Linux上的文件管理类命令及其常用的使用方法。 1、cp命令:copy     源文件、目标文件         单源复制cp [OPTION]…[-T] SOURCE DEST   &nb…

    2017-07-09
  • vim编辑以及脚本编程练习

    vim编辑器的使用总结: vim在工作过程当中有三种模式:编辑模式、输入模式、末行模式。 1、编辑模式:即命令模式,键盘操作常被理解为编辑命令; 2、输入模式:在文本文件当中进行输入内容; 3、末行模式:vim内置的命令行接口,执行vim的内置命令。   vim的使用 打开文件 #vim[option]…[FILE] +#:打开文件后,直接让光标处…

    Linux干货 2017-10-29
  • 安装CentOS 6.9与CentOS7.3

    今天学习了如何安装CentOS6.9与CentOS7.3. 安装CentOS6.9 首先打开虚拟机如下如所示: 然后点击创建新的虚拟机: 选择典型,然后点击下一步: 一般会选择稍后安装操作系统,然后点击下一步 客户机操作系统有很多,因为今天只安装CentOS 所以选择Linux 版本则选择CentOS 64 位 (因为CentOS7以上没有32位版本,只有C…

    2017-07-14

评论列表(1条)

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

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