文本三剑客之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 13:58
下一篇 2016-08-10 13:58

相关推荐

  • 逻辑卷

    LVM是逻辑卷管理(Logical Volume Manager)的简称,它是建立在物理存储设备之上的一个抽象层,允许你生成逻辑存储卷,与直接使用物理存储在管理上相比,提供了更好灵活性。       LVM将存储虚拟化,使用逻辑卷,你不会受限于物理磁盘的大小,另外,与硬件相关的存储设置被其隐藏,你可以不用停止应用或卸载…

    Linux干货 2016-09-01
  • bash基础特性的应用

    1:使用命令行展开功能来完成以下练习:     (1)、创建/tmp目录下的:a_c, a_d, b_c, b_d ~]# touch  /tmp/{a_{c,d},b_{c,d}}     (2)、创建/tmp/mylinux目录下的:      mkdir…

    Linux干货 2016-11-06
  • N26-第九周作业-邢岩

    马哥门徒-N26-邢岩 相信自己、勤奋努力、不断总结!shell脚本练习需要重复、重复、再重复!那么,我就继续来写、写、写。 1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #******************************…

    Linux干货 2017-04-03
  • N26-第十五周

    温故知新1、总结sed和awk的详细用法;sed stream EDitor 流编辑器,行级sed  [option] …’script’ [input-file]script 地址定界编辑命令常用选项-n 静默模式 ,不输出模式空间中的内容至屏幕-e script –expression …

    Linux干货 2017-08-24
  • 初识linux文件管理

    初识linux文件管理 1.文件系统与目录结构 文件系统从根目录 下开始,用“/”。 以. 开头的文件为隐藏文件,路径分隔用/表示。文件系统的层级结构是LSB(linux standard base),遵循文件系统层级标准(FHS ) 文件命名规则:   文件名最长255个字节,包括路径名在内共4095个字节  &nb…

    2017-02-18
  • 笔记四、Linux基础入门-上半部

    前言 直接已经教大家如何创建虚拟机和安装CentOS 操作系统了,那么今天就来开始入门吧。linux对于新手来说并不难,linux的构造 http://www.178linux.com/68853 这篇博客里我已经讲解了,有兴趣最好看一下llinux下每个目录的作用。还有Linux的哲学思想。 这里我就开始介绍了。 一、用户登陆   &n…

    2017-02-23