文本三剑客之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

相关推荐

  • Linux之查找命令find简介

    查找命令find简介    Linux使用过程中难免会遇到查找功能,类似于Windows中的搜索功能,如果想要找某个文件在什么地方,什么格式的文件等等。在Linux中我们可以使用find、locate、which、whereis等命令。接下来我们就简单说一下如何使用这几个命令查找文件。 一、which which命令的作用是,在PATH变…

    Linux干货 2015-05-18
  • 通过Xshell 5连接VirtualBox的centos

    环境:VirtualBox  centos6.5 1、使用VirtualBox Host-Only Network模式 2、打开宽带连接,设置属性,选择VirtualBox Host-Only Network共享。(在这里虚拟机centos的IP地址是自动获得,并且可以上网。) 3、虚拟机centos需要     关闭防火墙 :…

    Linux干货 2015-11-07
  • Linux用户操作、文件操作、文件筛选

    Linux用户操作、文件操作、文件筛选 编辑/etc/group文件,添加组hadoop。手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为/home/hadoop。 vim /etc/group hadoop:x:1001: vim /etc/passwd hadoop:x…

    Linux干货 2016-11-17
  • linux文件系统(ext2\ext3\ext4,xfs,btrfs…)的介绍[转载]

    ext2\ext3\ext4,xfs,btrfs 都是针对服务器系统越来越高效实用的日志文件系统 日志文件系统:    日志文件系统是一种即使在断电或者是操作系统崩溃的情况下保证文件系统一致性的途径。XFS对文件系统元数据提供了日志支持。当文件系统更新时,元数据会在实际的磁盘块被更新之前顺序写入日志。XFS的日志被保存在磁盘块的…

    Linux干货 2017-01-31
  • 1017练习题

    1017练习题 作业 10月17日 柴震 1.生产环境发现一台服务器系统时间产生偏差,造成服务异常,请帮忙校正。 hwclock 查看硬件是否准确,如准确无误,可以使用hwclock -s以硬件时间为准。 或者使用ntpdate命令指定一台NTP服务器,进行同步。 2.生产有一个数据同步脚本需要执行很长时间,怎样做到无人值守,在…

    Linux干货 2016-10-18
  • MooseFS性能图表[原创]

    对MooseFS有了一定的了解,现在可以压压它的性能了,使用的是iozone IO测试工具。测试命令为:./iozone -a -n 512m -g 4g -i 0 -i 1 -f /mnt/mfs/logs/test.tar.gz -Rb ./iozone.xls -C测试说明1、/mnt/mfs/logs/test.tar.gz大小为9.2G,大于服务器…

    Linux干货 2015-03-27