sed

简介

    sed 是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

一 sed

sed: Stream EDitor, 行编辑器;

    用法:

         sed [option]… 'script' inputfile…

         常用选项:

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

         -e: 多点编辑;

         -f /PATH/TO/SCRIPT_FILE: 从指定文件中读取编辑脚本;

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

         -i: 原处编辑;

    地址定界:

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

        (2) 单地址:

                   #: 指定的行;

                  /pattern/:被此处模式所能够匹配到的每一行;

        (3) 地址范围:

                #,#

                #,+#

                /pat1/,/pat2/

                #,/pat1/

         (4) ~:步进

                1~2

                2~2

    编辑命令:

         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:将替换成功的结果保存至指定文件中;

        

示例1:再test.txt文件中cat替换了linux

     sed 's/linux/cat/' test 

    blob.png

示例2: 在命令行使用多个编辑器命令

    sed -e 's/linux/cat/; s/is/hello/' test.txt 

    blob.png

示例3:从文件中读取编辑器命令,有大量的要处理的sed命令,将他们放在一个文件中,可以在sed -f 选项来指定文件,本例放在了script

    sed -f script test.txt 

    blob.png

示例4:显示被命令修改过的行

    sed -n 's/test/cat/p' test2.txt 

    blob.png

示例5:数字方式的行寻址,修改2至3行

     sed '2,3s/linux/cat/' test.txt

    blob.png

示例6: 删除2至3行

    sed '2,3d' test.txt

    blob.png   

示例7: 新行插入到数据流中第三行后面的例子

    sed '3a\hello word' test.txt

    blob.png

示例8:修改第三行中的文本

     sed '3c\hello word' test.txt

    blob.png    

示例9:删除除/boot/grub/grub.conf文件中所有以空白开头的行行首的空白字符;

    sed 's@^[[:space:]]\+@@' /boot/grub/grub.conf  

    blob.png       

示例10:删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符;

    sed 's@^#[[:space:]]\+?@@' /etc/fstab

    blob.png

示例11:echo一个绝对路径给sed命令,取出其基名;取出其目录名

    echo "/etc/sysconfig/" | sed 's@[^/]\+/\?$@@'

    blob.png

    

    高级编辑命令:

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

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

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

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

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

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

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

        d: 删除模式空间中的行;

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

示例12:显示test3.txt文件中的偶数行

    sed -n 'n;p' test3.txt

    blob.png

示例13:逆向显示test3.txt文件中的内容

    sed '1!G;h;$!d' test3.txt

    blob.png

示例14:取出test3.txt 文件中的最后2行

     sed '$!N;$!D' test3.txt

    blob.png

示例15:取出test3.txt 文件中的最后一行

    sed '$!d' test3.txt    

    blob.png

示例16:显示test3.txt 中的奇数行

    sed 'n;d' test3.txt    

    blob.png

    

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

(0)
liangkailiangkai
上一篇 2016-03-22
下一篇 2016-03-24

相关推荐

  • 三台服务器配置lamp

                   关于用三台服务器配置lamp 要求:(1) 三者分离于三台主机;          (2) 一个虚拟主机用于提供phpMyAdmin         &nbsp…

    2017-06-04
  • Linux之旅1

    Linux之旅1  一、描述计算机的组成及其功能 计算机的组成: 1、计算机主要由:CPU(控制器、运算器)、存储器、输入设备、和输出设备(输入设备、和输出设备又称为I/O设备)四部分组成; 计算机个组成部分的功能: CPU:主要有控制器和运算器组成; 控制器:控制器是整个计算机的中枢神经;其功能是对程序规定的控制信息进行解释,根据其要求进行控制,…

    2016-09-12
  • vsftp通过pam_mysql做虚拟用户认证

    vsftpd可以通过三种账户登录系统: 系统账户:系统本地账户登录系统,默认进入的目录是用户家目录,可以在所有有权限的路径切换; 匿名账户:匿名用户登录,然后映射为一个本地用户; 虚拟账户:既不是系统本地用户也不是匿名用户,而是通过pam做第三方认证的方法,支持文件和数据库,ldap的认证,此处通过mysql进行实验; 一、准备实验环境 实验在一台虚拟机上进…

    Linux干货 2017-06-07
  • Linux基础知识总结

    Linux基础知识 计算机系统 计算机硬件组成 1.控制器:计算机系统的控制中心,协调各部分工作,保证计算机按照预先规定的目标和步骤进行操作及处理。 2.运算器:对数据进行算数运算,逻辑判断以及数据的比较、移位等操作。 3.存储器:存取程序和各种数据信息。  4.输入设备:把信息,如数字、文字、图像等转换为数字形式的“编码”的设备(键盘,扫描仪) …

    2017-05-18
  • 【N25第三周作业】用户及权限管理

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost ~]# who root     pts/0        2016-12-14&nb…

    Linux干货 2016-12-14
  • bonding

    boding制作        问题:一个网卡一个IP没有容错性     bonding是LINUX中将多网卡绑定虚拟成一块网卡,实现多网卡共同拥有一个IP,这项技术早在Sun和Cisco中被称为Trunking和Etherchannel技术。   …

    2017-03-22