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

(0)
旧城以西旧城以西
上一篇 2016-08-12
下一篇 2016-08-12

相关推荐

  • 回溯法 -数据结构与算法

    1.回溯法算法思想: 定义:         回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。 1、回溯法适用:有许多问题,当需要找出它的解集(…

    Linux干货 2015-04-07
  • 人志建,则无敌—网络基本知识加简单脚本练习

    马哥21期网络班-8周博客作业 1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 网桥:网桥就是把2个不同的网段桥接起来;可隔离冲突域。 集线器:集线器就是把多根以太网线或光纤集合连接在同一段物理介质下的装置;工作在物理层;不能隔离冲突域。 二层交换机:工作于OSI模型的第2层(数据链路层),故而称为二层交换机。二层交换技术的发…

    Linux干货 2016-08-29
  • vim文本编辑器之快捷键满天飞

    vim文本编辑器不同于nano的是其功能非常强大,强大的功能还支持各种快捷键,让我们编辑文本的时候更方便更快捷。 本文将会按照下图所展示的功能来对命令一一讲解,           打开文件:       &n…

    Linux干货 2016-08-11
  • sed工具

    sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(patternspace),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来…

    2017-08-26
  • 位置变量在Shell脚本编程中的作用

    位置变量:         如果要向一个shell脚本传递信息,可以使用位置参数完成此功能;参数相关数目传入脚本,此数目可以任意多,但只有前9个可以被访问,使用shift命令可以改变这个限制;参数从第一个开始,在第九个结束;每个访问参数前要加$符号;第一个参数为0,表示预留保存实…

    Linux干货 2016-08-15
  • CentOS6 ELK实现

    1 简介 我们来介绍Centos6.5基于SSL密码认证部署ELK(Elasticsearch 1.4.4+Logstash 1.4.2+kibana3),同时为大家介绍如何集合如上组件来收集日志,本章的日志收集主要为大家介绍SYSTEM日志收集. 集中化日志收集主要应用场景是在同一个窗口临时性或永久性鉴定分析系统,应用等各类日志,对用户提供极大便…

    Linux干货 2017-05-17