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

相关推荐

  • 第一周学习总结

    俗话说,好记性不如烂笔头,在当今移动互联网横行的时代,烂笔头就是网络,而笔记本就是各种平台。 作为一个IT人,有人突然问你计算机是啥,你可能不会像学文科的人一样给他说,就是电脑啊。这时候就是凸显IT知识技能的时候了,那么我下面就给您慢慢的道来。 在1946年美籍匈牙利人冯·诺依曼首次提出了自己的计算机体系理论,简称冯·诺依曼体系,主要是说计算机由五大基本部件…

    2017-12-14
  • Android必备的Java知识点

     Android应用程序开发是以Java语言为基础的,所以需要有扎实的Java基础知识。首先熟悉java基本语法,然后熟悉设计模式等。         a) Java基础语法:看下面的《Java知识点列表》       b)设计模式:由于在Android系统的框架层当中,使用了大…

    Linux干货 2015-04-08
  • 几个常用命令、inode及第二周作业

    一、cd命令 1、功能 用来进行不同目录间的切换,属于内部命令。 2、语法 cd  [-L|-P]  [dir] -L : 如果要切换到的目录是一个符号链接,就直接切换到符号链接名表示的目录(默认)。 -P : 如果要切换到的目录是一个符号链接,直接接切换到符号链接指向的目标目录。 3、用法说明 cd 或 cd ~ :进入当前用户的主目录…

    Linux干货 2016-08-02
  • 常用linux命令小计(1)

    关于linux那些事儿—常用命令小结(1) 系统相关信息 Uname –m显示处理器的架构 Uname –r显示正在使用的内核版本 cat /proc/cpuinfo显示cpu的具体信息 cat /proc/version显示内核的版本 cat /proc/swaps显示哪些分区被使用 data显示系统日期 cal –y显示当年的日历 date 021920…

    Linux干货 2017-02-19
  • CentOS系统启动

    Linux组成 Linux: kernel+rootfs kernel:  进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能 rootfs: 程序和glibc 库:函数集合, function,  调用接口(头文件负责描述) 过程调用:procedure ,无返回值 函数调用:function 程序:二进制执行文件 内核设计流派…

    2017-05-15
  • 网络25期学习宣言

    马哥Linux运维学院 学习宣言 亲爱的小伙伴:        欢迎大家报名马哥Linux运维网络学习班,跟随马哥学习Linux技术,成就Linux大牛之梦。在这里,我们不仅可以学习到最优秀的技术课程,还可以跟着追梦的小伙伴们一起学习、一起进步。 为了督促大家一直积极认真努力的学习,请各位同学在评论区写出你的学习宣言。…

    Linux干货 2016-11-14

评论列表(1条)

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

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