码迷,mamicode.com
首页 > 系统相关 > 详细

处理文本的工具sed,vim 编辑器的使用   Linux版

时间:2016-08-10 23:14:02      阅读:601      评论:0      收藏:0      [点我收藏+]

标签:linxu   vim 编辑器   sed 文本处理工具   

处理文本的工具sed

Stream EDitor 行编辑器

sed一次处理一行的内容,处理时,将当前处理的行存储在临时缓冲区,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,将缓冲区的内容送往屏幕,接着处理下一行不断重复,直到末尾。

     

一次处理一行

文件--->内存空间--->屏幕

 模式空间 


文件--->内存空间--->屏幕

            |               

 保持空间  


sed  

     -n:不输出模式空间内容的自动打印

     -e:多点编辑

     -f:/PATH/TO/SCRIPT_FILE:从指定文件中读取编辑文本

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

     -i:原处编辑

     -i.bak   直接使用容易删去文件,使用的时候在后面加.bak 留下一个备份

     sed -i.bak ‘10d‘ f1


script:地址命令

地址定界:

      (1)不给地址:对全文进行处理

      (2)单地址:

                #:指定的行

                /pattern/:被此处模式所能够匹配到的每一行

      (3)地址范围:         

                 #,#

                 #,+#

                 /pat1/,/pat2/  sed -n ‘/^root/,/^s/p‘

                 #,/pat1/

      (4)~:步进

               1~2 奇数行

               2~2 偶数行




sed -n ‘2p‘ f1

将第二行显示出来

技术分享

编辑命令:

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

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

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

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

          c \text:替换行为单行或多行文本

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

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

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

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


s///: 查找替换,支持使用其它分隔符,s@@@,s###

替换标记:

         g:行内全局替换

         p:显示替换成功的行

         w /PATH/TO/SOMEFILE:将替换成功的行保存至文件中

nl =cat -n 显示行号   

sed ‘s@^[^#]@#&@‘ /etc/fstab 

技术分享

echo /etc/sysconfig/ |sed -r ‘s#(/.*/)[^/]+?#\1#‘ 

                     sed ‘s#^.*\<##‘

                     sed -r ‘s#[^/]+/?##‘

技术分享    

技术分享    

技术分享             

sed工具

高级编辑命令:

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

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

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

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

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

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

             N:追加匹配到的行的下一行至模式空间

             d:删除模式空间中的行

             D:删除当前模式空间开端至\n的内容(不在传至输出),放弃之后的命令,但是对剩余模式空间重新执行sed





vim 编辑器



只在/etc/目录下的文件,用vim才显示格式高亮颜色。

技术分享


+#:+数字:直接打开跳到数字行

    +/PATTERN:  打开文件之后直接跳到关键词

    +空格:打开直接跳最后一行

    

-d:同时打开多个文件,并能对比出文件之间的不同

-m:打开为只读方式,不能修改

-e:直接进入ex模式



vim三种主要模式

       命令模式(默认):主要功能是查看文件内容

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

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

   hjkl 上下左右移动


插入(编辑)模式

       i:在原本光标的地方修改

       I:自动去到光标所在的行开头

       a:跳到光标所在的位置的后一位置

       A:直接跳到光标所在的行尾

       o:在当前光标所在的行下方打开一个新行

       O:在当前光标所在的行的上分打开一个新行



模式转换

插入模式 ---->命令模式

          ESC

命令模式 ---->扩展模式

           :

扩展模式 ---->命令模式

          ESC

锁定和解锁:Ctrl+s,屏幕不显示,但是实际能够输入,解锁可以显示

            Ctrl+q



关闭文件

扩展模式:

        :q 退出

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

        :wq 保存退出

        :x 保存退出

        按“:”进入Ex模式




命令模式

        ZZ:保存退出

        ZQ:不保存退出



字符间跳转:

h: 左  l:右  j:下  k:上


单词间跳转:

          w:下一个单词的词首

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

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

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

当前也跳转:

          H:页首

          M:页中间行

          L:页底


行首行尾跳转:

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

          0:跳转至行首

          $:跳转至行尾


行间动:

          #G,扩展模式:#:跳转至由#指定行

          G:最后一行

          1G,gg:第一行


句间移动:

        ):下一句 

        (:上一句


段落间移动:

        }:下一段

        {:上一段




命令模式翻屏操作

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

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

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

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



字符编辑:

         x:删除光标处的字符

         #x:删除光标处其实的#个字符

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

         ~:转换大小写

替换命令:

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

         R:切换成REPLACE模式



删除命令:d

        d:删除命令,可以结合光标跳转字符,实现范围删除

        d$:删除到行尾

        d^:删除到非空行首

        d0:删除到行首

        dd:删除到光标所在的行

        #dd:多行删除

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



拷贝命令:y

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

          y$:复制到行尾

          y0:复制到行首

          y^:复制到非空行首

          yy:复制行

             #yy:复制多行

          y:复制整行   


粘贴命令: p

         p:粘贴当前光标所在后面

         P:粘贴在当前光标所在的前面


改变命令:c         


命令模式

100 i wang [ESC] 粘贴“wang”100次

y 复制,d删除,gU,变大写,gu变小写




地址定界:#:具体第#行,例如2表示第二行

          #,#:从左侧#表示行起始,到右侧#表示行结尾

          #,+#:从左侧#表示行起始,加上右边→_→#表示的行数

                 2,+3  表示2到5行

          .:表示当前行

          $:最后一行

                    .,$-1 当前行到倒数第二行

          %:全文,想当于1,$          

         

地址定界 扩展模式:

                 /at1/,/pat2/

                 从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束

                #,/pat/

                /pat/,$



撤销更改:u 

#u撤销之前多次更改    

重做按:Ctrl+r

重复前一个操作:.

n. 复制n次前一次的操作。

U撤销光标所在行的所有更改



vim的寄存器

"a yy

"a p

"b yy


有26个命名寄存器和1个无名寄存器,常存放在不同的剪贴板内容,可以不同回话间共享。

用a,b,...,z表示,用"寄存器表示,放在数字和命令之间

       如:3"tyy表示复制3行到t寄存器中

       "tp 表示将t寄存器内容粘贴

未指定,将使用无名寄存器

有10个数字寄存器,用0,1,...9表示,0存放最近复制内容,1存放最近删除内容。当新的文本变更和删除时,1转存到2,2存转到3,以此类推。数字寄存器不用在不同回话间共享。


编辑二进制文件

以二进制方式打开文件

           vim -b binaryfiy

    扩展命令模式下,利用xxd命令转换为可读的十六进制

           :%!xxd

    扩展命令模式下,利用xxd命令转换回二进制

           :%!xxd       

技术分享


可视化模式

    v面向字符

    V面向行

    ctrl -v 面向块


可视化键可用于与移动键结合使用:

    w,),},箭头等

突出显示的文字可以被删除,复制,变更,过滤,搜索,替换等。



多文件模式

vim f1,f2,f3...

    :next 下一个 

    :prev 前一个

    :first 第一个

    :last 最后一个

    :wall 保存所有

    :qall 退出所有

    :wqall 保存退出所有


多文件分隔

    vim -o | -O f1 f2

    -o:水平分隔

    -O:垂直分隔

  在窗口间切换:Ctrl+w

                可以通过Ctrl+w 可以切换都其他分割窗口

      单文件窗口分隔:

                     水平分割:Ctrl+w,s

                     垂直分割:Ctrl+w,v

                     取消相邻的窗口:Ctrl+w,q 

                     取消全部窗口:Ctrl+w,o

                     退出:wqall

技术分享

技术分享


vim 配置文件:

            全局:/etc/vimrc

            个人:~/.vimrc

    扩展模式:当前vim进程有效

             (1)行号

                  显示:set number,简写为:set nu

                  取消显示:set nonumber,简写:set nonu

              (2)括号成对匹配

                  匹配:set showmatch,简写为set sm

                  取消:set nosm

              (3)自动缩进

                  启用:set ai

                  禁用:set noai

              (4)高亮搜索

                  启用:set hlsearch

                  禁用:set nohlsearch

             (5)语法高亮

                  启用:syntax on

                  禁用:syntax off

              (6)忽略字符的大小写

                  启用:set ic

                  不忽略:set noic

              (7)文件格式

                  启用:fileformat=unix (Linux)

                  不忽略:fileformat=dos (windows)

              (8)设置文本宽度

                   :set textwidth=65(vim only)宽度

                   :set wrapmargin=15


              vim/vi 内置帮助

                     :help

                     :help topic



本文出自 “zczx_展鸿” 博客,请务必保留此出处http://swzczx.blog.51cto.com/11767585/1836545

处理文本的工具sed,vim 编辑器的使用   Linux版

标签:linxu   vim 编辑器   sed 文本处理工具   

原文地址:http://swzczx.blog.51cto.com/11767585/1836545

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!