sed工具 vim编辑器

sed工具:

   用法

          sed [option]… 'script' inputfile…

     常用选项:

           -n:不输出模式空间内容的自动打印,只输出处理行的结果

           -e: 多点编辑

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

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

           -i: 原处编辑,可以直接修改文件 ; -i.bak:备份文件再修改,安全

      script:    ' 地址,命令'

地址界定:

 *如果没有明确表明地址,则对全文进行处理

 *单地址

               #:指定的行    /pattern/被此模式所能匹配到的每一行进行处理

*地址范围:

              #,#:表示第#行到第#行

              #,+#:表示第#行,和之后的#行

              /pat1/,/pat2/:从匹配到的/pat1/行开始,到/pat2/的行 之间的行               #,/pat1/:从第#行开始,到匹配到/pat1/的行 之间的行

     * ~:步进

               1~2:奇数行

               2~2:偶数行

编辑命令:

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

blob.png

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

blob.png

显示第三行, -n表示不显示默认输出的结果,只显示第3行的匹配结果

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

blob.png

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

blob.png

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

blob.png

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

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

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

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

blob.png

如果不加!:f2文件中1到3行加上行号  加上!结果取反,1到3行不加,其他行加

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

        替换标记:

                   g: 行内全局替换

                   p: 显示替换成功的行

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

blob.png

这里没有加g,所以是匹配到的有good的行的第一个字符进行替换,加上g的话,就是行内所有的匹配到的字符全部替换:

blob.png

[root@localhost ~]# cat f1
good good good
goodgood
goood
[root@localhost ~]# sed "s/good/god/" f1
god good good
godgood
goood
[root@localhost ~]# sed -n "s/good/god/gp" f1
god god god
godgod

只显示替换成功的行



blob.png

&符号表示前面的搜索结果,比如在这里就表示的是,把root替换成rootsuperman

&也可以放在后面:/root/superman&/表示把root替换成supermanroot

保持空间: 可暂时存放数据的空间

高级编辑命令

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

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

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

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

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

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

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

       d: 删除模式空间中的行

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

vi文本编辑器

简介:

          vi:Visual Interface,文本编辑器

 文本编辑种类:

                     行编辑器:sed

                     全屏编辑器:nano,vi

                     vim – Vi Improved是vi的加强版

其他编辑器:

                    gedit 一个简单的图形编辑器

                    gvim  一个vim编辑器的图形版本

打开文件

命令格式vim [OPTION]… FILE…

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

vi +2 f2

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

vi +/UUID f2

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

 vi + f2

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

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

vi -d f1 f11

         vim -m file 只读打开文件

         ex file 或 或 vim –e 直接进入ex模式    如果该文件存在,文件被打开并显示内容;如果该文件不存在,当编辑后第一次存盘时创建它

vim的三种主要模式

           命令模式(默认):移动光标,剪切、粘贴文本 ,用来查看文件

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

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

  Esc键:退出当前模式    Esc键 Esc键 总是返回到命令模式

由命令模式–>插入模式

      i: insert, 在光标所在处输入

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

       a: append, 在光标所在处后面输入

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

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

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

模式之间的转换

    插入模式 —-> 命令模式     按ESC键

       命令模式 —-> 扩展模式      直接输入:   :wq存盘退出;    :q没改文件的情况下退出;    :q!更改文件的情况下强行退出,但不保存文件;    :x存盘退出=:wq

       扩展模式 —-> 命令模式      按ESC键

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

关闭文件

     扩展模式:   输入 :wq存盘退出;    :q没改文件的情况下退出;    :q!更改文件的情况下强行退出,但不保存文件;    :x存盘退出=:wq

     命令模式:   ZZ:保存退出       ZQ:不保存退出

扩展模式

         按“:” 创建一个命令提示符:,处于底部的屏幕左侧,进入Ex模式

         命令:

            w写(存)磁盘文件,可以临时保存,亦可以保存在别的文件

(w  filename)  然后继续编写

            wq写入并推出=x

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

            w filename 将当前文件内容写入另一个文件,临时保存

            :!command,可以执行命令,执行完,回车键返回文件编辑

           :r!command  直接读取命令执行结果

命令模式的光标跳转

     字符间跳转

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

#COMMAND :跳转由#指定的个数的字符;例如:10h–向左跳转10个字符

单词间跳转:

          w:下一个单词的词首

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

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

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

当前页跳转:

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

行首行尾跳转:

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

        0: 跳转至行首

        $: 跳转至行尾

行间移动:

        #G(输入行数+G进行跳转)、扩展模式:#  跳转至由#指定行

         G:最后一行   1G, gg: 第一行

句间移动

         ):下一句 (:上一句   默认以.结束是一句话

段落间移动:

         }: 下一段 {:上一段

命令模式翻屏操作:

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

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

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

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

命令模式操作

      字符编辑:

            x:直接删除光标处的字符;

            #x:删除从光标出开始的#个字符

            xp:交换光标所在处的字符及其后面字符的位 是x,p的组合,

x是剪切,p粘贴

            ~:转换大小写

       替换命令(r,replace)

             r:替换光标所在处的字符,只能一个

             R:切换成REPLACE模式,输入任意字符替代光标处字符,一直替换,按esc键退出REPLACE模式

       删除命令:

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

          d$: 删除到行尾

          d^: 删除 到非空行首

          d0: 删除到行首

          dw:从光标处删除到光标所在单词词尾

          de:从光标处删除到所在单词词尾

          db:从光标处删除到光标所在单词词首

          dd: 删除光标所在的行

          #dd :多行删除

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

 复制命令(y, yank):想要粘贴  把光标跳转至指定位置,按p,在光标之后粘贴,按P,在光标之前粘贴粘贴命令(p, paste):

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

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

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

        y$:从光标处到行尾复制

        y0:从光标处到行首复制

        y^:从光标处到行首非空字符复制

        ye:从光标处到单词词尾复制

        yw:从光标处到单词词尾复制

        yb:从光标处到单词词首复制

        yy:复制行

            #yy:复制多行

        Y:复制整行

   命令模式 –> 插入模式 c:修改后切换成插入模式

             c$:删除从光标处到行尾的字符,然后自动切换至插入模式

             c^:删除从光标处到行首的非空字符,进入插入模式

             c0:删除从光标处到行首的所有字符,进入插入模式

             cb:删除从光标处到词首的字符,进入插入模式

             ce:删除从光标处到词尾的字符,进入插入模式

             cw:删除从光标处到词尾的字符,进入插入模式

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

             #cc:从光标之后的#行删除并输入新内容

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

             100iquan[Esc] 粘贴“quan”100次

       Command:

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

命令将的组合: 0y$:从行首到行尾最后一个字符进行拷贝

                    ye:从当前位置拷贝光标所在单词的最后一个字符

扩展模式下的地址界定:

                #:从第#开始

#,#: 从第#行到右边的第#行

            #,+#: 从第#行开始到第#+#行结束   如:2,+3 表示2到5行

             .: 当前行       $: 最后一行   如:.,$-1 当前行到倒数第二行

            %:全文, 相当于1,$

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

             #,/pat/:第#行到第一次被pat匹配到的行

            /pat/,$:从第一次被pat匹配到的行到最后一行

使用方式:后跟一个编辑命令

               d:删除

y:复制

               w file: 将范围内的行另存至指定文件中

               r file :在指定位置插入指定文件中的所有内容

blob.png

从第一个行首是任意字符的有by的行首到第一个被匹配到的行首是任意字符的有man的行尾进行复制      到指定位置,在命令模式下按p键粘贴,如下图:

blob.png

扩展模式下的查找:

/PATTERN :从当前光标所在处向文件尾部查找查找关键词

blob.png

       ?PATTERN :从当前光标所在处向文件首部查找

        n:与命令同方向跳到下一个关键词

        N:与命令反向跳到下一个关键词

扩展模式模式下的查找并替换:

        s:在扩展模式下完成查找、替换

        格式:s/($、@、#)要查找的内容/替换的内容/修饰符

        其中修饰符有:

                i:忽略大小写

                g:全局替换;     因为默认模式下,是每行只替换第一个

                gc:全局替换,每次替换前询问

微信截图_20160811153402.png

命令的意思:全文搜索/sbin/nologin,并用/bin/bash进行全局替换

blob.png

替换完成 

命令模式 :撤销修改

          u:撤销最近的更改

          #u:撤销之前的#次更改

          U:撤消光标落在这行后所有此行的更改

          :按Ctrl -r重做最后的“撤消”更改

          .:重复前一个操作

          n.:重复起一个操作n

vim寄存器  只能一个人用

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

如:3"tyy 表示复制3行到t寄存器中  执行完3“tyy后文件下方会出现:3 lines yanked 字样,表示已经复制到t寄存器中完毕 

"tp 表示将t寄存器内容粘贴  把光标移动到指定位置,执行“tp即可粘贴刚才复制的t寄存器中的内容

如果未指定寄存器名字,将使用无命名寄存器

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

可视化模式

允许选择的文本块:

           v面向字符

           V面向行

           ctrl-v 面向块

blob.png

     相当于选中范围

可视化键可用于与移动键结合使用:w,)},箭头等

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

多文件模式

 vim FILE1 FILE2 FILE3 … 同一时间只能看到一个文件

     扩展模式下输入:

             :next 下一个

             :prev 前一个

             :first 第一个

             :last 最后一个

             :wall 保存所有

             :qall 退出所有

             :wqall 保存并退出所有

使用多个窗口

      多文件分割  vim -o|-O FILE1 FILE2 …

        -o: 水平分割     -O: 垂直分割

        在窗口间切换: Ctrl+w,方向键  上下左右跳转

blob.png

 单文件窗口分割

          Ctrl+w,s:水平分割

          Ctrl+w,v:垂直分割

          ctrl+w,q:取消相邻窗口

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

          : wqall 退出

blob.png

定制vim的工作特性:

        配置文件:永久有效,修改配置文件

        全局:/etc/vimrc

        个人:~/.vimrc

         在扩展模式下定制特性,只对当前进程有效

 行号

              显示:set number, 简写为set nu

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

           

blob.pngblob.png

 自动缩进

              启用:set ai

              禁用:set noai

   高亮搜索:

              启用:set hlsearch

              禁用:set nohlsearch

   语法高亮:

              启用:syntax on

              禁用:syntax off

忽略字符的大小写:

              启用:set ic

              不忽略:set noic

    文件格式

              启用:set fileformat=unix

              不忽略:set fileformat=dos

    (8) 设置文本宽度  标准长度:一行80字符

            :set textwidth=65 (vim only,vi不支持)距离左边65个字符换行

            :set wrapmargin=15距离右边15个字符换行

如果想要了解更多,请在vi中扩展模式下敲help

原创文章,作者:旧城以西,如若转载,请注明出处:http://www.178linux.com/31915