文本三剑客之sed

文本处理三剑客之sed

sed 本身也是一个管线命令,是一个(流|行)编辑器! 而且 sed 还可以将数据进行取代、删除、新增、撷取特定行等等的功能。工作模式是从源文件中一次读取一行,存储到sed自己的内存中进行处理,如果模式被匹配到就可以编辑并且输出到标准输出,如果没有被匹配到则直接输出到标准输出。

    sed [OPTION]… script [input-file]…

    常用选项:

    -n:不输出模式空间中的内容至屏幕;

    -e:多点编辑;可以同时指定多个编辑命令

    [root@ali ~]# cat /etc/fstab  |sed -e 's/^#[[:space:]]*//g' -e '/^UUID/d'

    -f:/path/to/sed_script_file 每行一个编辑命令;

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

    -i:原处编辑:直接编辑原文件(危险命令)

        提示:任何情况下修改和删除之前先备份


    地址定界

        (1)空地址:对全文进行处理;

        (2)单地址:

        #:指定行;

        /pattern/:被次模式所匹配到的每一行;

        (3)地址范围

        #,#:

        #,+#:

        #,/pat1/

        /pat1,/pat2

        $:最后一行

        (3)步进:~

        1~2:所有奇数行

        2~2:所有偶数行


    编辑命令:

        d:删除

        [root@ali ~]# nl /etc/fstab |sed '1,5d'

         5 # Accessible filesystems, by reference, are maintained under '/dev/disk'

         6 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

         (删除了第一到第五行的内容)

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

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

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

         c\text:把匹配刀到的行替换为此处指定的文本“text”

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

         r/path/from/somefile:读取指定文件的内容至当前文件被模式匹配到的行后面;实现文件合并        

         =:为模式匹配到的行打印行号

         !:条件取反(语法顺序 地址定界!编辑命令)   

         s///:查找替换,其分隔符可自行指定,常用的有s@@@,s@@@

         替换标记:

         g:全局替换

         w/path/to/somefile:将替换成功的结果保存至指定文件中

        p:显示替换成功的行


    高级编辑命令和示例

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

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

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

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

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

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

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

        d:删除模式空间中的行

        D:删除多行模式空间中的所有行

        示例:

         sed -n 'n;p'file:显示偶数行

         sed '1!G;h;$!d'file:逆序显示文件内容,tac表示不服

         sed '$!d' file:取出最后一行;tail -n1 表示不服

         sed '$!N;$!D' file:取出文件最后两行;tail -n2表示不服

         sed '/^$/d;G' file:删除原有的所有空白行后,而后为所有的非空白行添加一个空白行

         sed 'n;d' file:显示奇数行;

         sed 'G' :在原有的每行后方添加一个空白行


原创文章,作者:M20-1马星,如若转载,请注明出处:http://www.178linux.com/32244

(0)
M20-1马星M20-1马星
上一篇 2016-08-10
下一篇 2016-08-10

相关推荐

  • ansible学习笔记

    简介:  在日常服务器维护中,从系统安装到程序部署再到发布应用,在大规模的生产环境中,如果需要手动的每台服务器进行安装配置将会给运维人员带来许多繁琐而又重复的工作。这就促使了在每个运维层次中出现了不同的自动化运维工具。 常见的自动化运维工具分类有以下几类:  系统安装运维工具(OS Provisioning):    …

    Linux干货 2015-08-17
  • linux用户组和权限管理

    用户组和权限管理  概念 用户分为三类: 1、超级用户:root uid=0,简单来说uid为0的用户就是超级用户。 2、虚拟用户:存在linux中,满足文件或者程序运行的需要,而创建的。不能登录,不能使用。uid=1-499,1-999(centos7) 3、普通用户:管理员root创建的用户。uid=500+,1000+(centos7) 用户…

    Linux干货 2017-07-29
  • grub详解

    grub详解 1、GRUB(Boot Loader): grub:grub 0.x:grub1 legacy传统的版本 grub 1.x:grub2 grub legacy: 第1阶段:mbr 第1.5阶段:mbr之后的扇区中,让第一阶段中的boot loader能识别第二阶段所在分区上的文件系统 第2阶段:磁盘分区(/boot/grub/) 配置文件/et…

    2017-09-03
  • Linux文件类型及颜色标示

    在Linux系统中,有多种文件类型,不同的文件类型有不同的颜色。 ls -l 目录,这个命令可以在显示的类容中的第一个位置查看目录里面文件的类型。 Linux下用字符表示的文件类型 -:普通文件 d:目录文件 l:链接文件 b:块设备文件 c:字符设备文件 p:管道文件 同时 白色:表示普通文件 蓝色:表示目录 绿色:表示可执行文件 红色:表示压缩文件 浅蓝…

    Linux干货 2016-10-17
  • 马哥教育网络班21期-第7周课程练习

    第7周课程练习 创建一个10G分区,并格式为ext4文件系统; 添加一块硬盘sdb 要求其block大小为2048,       预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl; # mke2fs -t ext4 -b 2048 -L 'MYDATA' -m 2 # mount -o ac…

    Linux干货 2016-10-09
  • LINUX-echo命令

    echo命令:回显         语法:echo [-neE][字符串]     说明:echo会将输入的字符串送往标准输出。输出的字符串间         以空白字符隔开,并在最后加上换行号。   &nbs…

    Linux干货 2017-05-22