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

处理文本的工具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

将第二行显示出来

QQ图片20160810102321.png

编辑命令:

          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 

QQ图片20160809212745.png

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

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

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

QQ图片20160809213500.png    

QQ图片20160809213722.png    

QQ图片20160809213956.png             

sed工具

高级编辑命令:

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

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

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

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

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

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

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

             d:删除模式空间中的行

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

vim 编辑器

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

QQ图片20160810102600.png

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

    +/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       

QQ图片20160810101343.png

可视化模式

    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

QQ图片20160809215023.png

QQ图片20160809214453.png

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

1、如何设置tab缩进为4个字符?

   :settabstop=4 softtabstop=4 shiftwidth=4 noexpandtab 

2、复制/etc/rc.d/init.d/functions文件至/tmp目录;替换/tmp/functions文件中的/etc/sysconfig/init为/var/log;

sed 's@//etc//sysconfig//init@//var//log@'g /tmp/functions 

3.删除/tmp/functions文件中所有以#开头,且#后面至少有一个空白字符的行的行首的#号;

sed 's@^[#]@#\n@' /tmp/functions 

原创文章,作者:swzczx,如若转载,请注明出处:http://www.178linux.com/32514

(0)
上一篇 2016-08-11 09:38
下一篇 2016-08-11 09:39

相关推荐

  • 正则表达式—grep的用法详解

    grep与sed、awk共称为文字处理三剑客,支持正则表达式语句,具体用法如下: grep [options] PATTERN [file]     #常用选项:     –color=auto  #对匹配到的文本着色显示 &n…

    Linux干货 2016-07-04
  • Shell 编 程 之 until循 环 语 句-20160817

    Shell 编 程 之 until循 环 语 句 §·练习题: 1 每隔3秒钟到系统上获取已经登录的用户的信息;如果发现用户hacker登录,则将登录时间和主机记录于日志/var/log/login.log中,并提示该用户退出系统? 解:解题思路:按照题意该脚本一直无限循环,一直探测用户h…

    Linux干货 2016-08-22
  • 单网卡多IP,双网卡实现负载

        有些时候会我们一个IP不够用,但是又不想加网卡,可以试试一个网卡实现多个IP,下面我们来操作一下。 生成新增IP配置文件信息;  [root@localhost network-scripts]# cat ifcfg-eth0      DE…

    Linux干货 2016-09-06
  • FHS文件系统各目录功能

    前言:     文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易。linux的哲学是一切皆文件,linux系统中的一切包括设备文件,我们都能在linux的倒置树状文件系统中找到相对应的文件。所以清楚的明白根目录下的每个子目录包含什么样的文件是很有必要的。我们将以Filesystem Hierarchy Standar…

    Linux干货 2016-10-17
  • Linux磁盘知识,分区与文件系统

    硬件设备在Linux系统中的表现     设备文件      I/O Ports: I/O设备地址      一切皆文件:         open(), read(), write(), close()   &nbsp…

    Linux干货 2016-08-29
  • 将两个局域网用openvpn连接起来

    考虑到我们做集群的时候需要用到可能有20台机器,可能我的要求跟别人的不一样的,我需要做20台左右的集群,不仅仅是会,而且需要非常熟练的搭建,最后通过脚步一键自动化部署安装。 目前我有两台电脑,一台可以运行7台,另一台可以运行12台左右,刚好可以满足的我的要求,但是我两台电脑都是设置的nat模式的网络,为什么我非要配置nat模式呢,根据集群架构思想,为了保证架…

    Linux干货 2017-05-01