文本处理及正则表达式

文本处理工具:

    more:分页查看文件

    less:分页控制显示文件

    head 查看文件的前几行

        -n 3   显示前三行

        -3  显示前三行

        -c  指定显示的字节数

        一个汉字占用三个字节

   tail   查看显示文件的后几行

        -n 3   显示后几行

        -c    显示最后的指定字节数

        -f    跟踪显示更新

   cut [0ption]  [file]

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

        -f:指明第几列

        #:第#个字段

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

        #-#:连续的多个字段,如1-5

        混合使用:1-4,7    1到4列和第7列

        -c:按字符切割

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

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

       paste [option] [file]

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

       wKioL1ku0kuCsYJSAAAfSTGyPbU268.png-wh_50

                -s:所有的行合并到一行显示

                paste f1 f2

                paste -s f1 f2

            文本处理及正则表达式

    wc 计数单词总数、行总数、字节总数和字符总数
        可以对文件或STDIN 中的数据运行
            wc story.txt
            39 237 1901 story.txt
            行数 字数 字符数
        使用 -l 来只计数行数
        使用 -w 来只计数单词总数
        使用 -c 来只计数字节总数
        使用 -m 来只计数字符总数
    sort 文本排序
        把整理过的文本显示在STDOUT ,不改变原始文件
        sort [options] file(s)
            常用选项
                -r 倒序(由上至下)排列
                -n 执行按数字大小排列
                -f 选项忽略(fold )字符串中的字符大小写
                -u (独特,unique )删除输出中的重复行
                -t c: 指定c为字段分割符
                -k X:指定的c字符分割的X列排序
    unip行
        uniq [OPTION]… [FILE]…
            -c: 显示每行重复出现的次数
            -d: 仅显示重复过的行
            -u: 仅显示不曾重复的行
            连续且完全相同方为重复
        常和sort 命令一起配合使用:
            sort userlist.txt | uniq -c
    diff:比较两个文件
        比较两个文件之间的区别
            diff foo.conf-broken foo.conf-works
        diff 命令的输出被保存在一种叫做“补丁”的文件中

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

         文本处理及正则表达式

        patch 复制在其它文件中进行的改变(要谨慎使用)
        适用 -b 选项来自动备份改变了的文件
            diff -u foo.conf-broken foo.conf-works > foo.patch
            patch -b foo.conf-broken foo.patch

文本处理及正则表达式

grep :文本过滤( 模式:pattern) 工具
    grep, egrep, fgrep (不支持正则表达式 搜索)
sed :stream editor 文本编辑工具
awk :Linux 上的实现gawk,文本报告生成器
grep:
    作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行模式:由正则表达式字符及文本字符所编写的过滤条件.
    选项:

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

         文本处理及正则表达式 

        -v: 显示不被pattern 匹配到的行
        -i:忽略字符大小写
        -n:显示匹配的行号
        -c: 统计匹配的行数
        -o: 仅显示匹配到的字符串
        -q: 静默模式,不输出任何信息
        -A #: after, 后#行
        -B #: before, 前#行

        -C # :context, 前后各#行

         文本处理及正则表达式

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

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

        文本处理及正则表达式

        -w :匹配 整个单词
        -E :使用ERE
        -F :相当于fgrep

正则表达式

    由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能。

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

    基本正则表达式元字符:

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

            . 匹配任意单个字符
            [] 匹配指定范围内的任意单个字符
            [^] 匹配指定范围外的任意单个字符
            [:alnum:] 字母和 数字
            [:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z
            [:lower:] 小写字母 [:upper:] 大写字母
            [:blank:] 空白字符(空格和制表符)
            [:space:] 水平和垂直的空白字符(比[:blank:] 包含的范围广)
            [:cntrl:] 不可打印的控制字符(退格、删除、警铃…) )
            [:digit:] 字 十进制数字 [:xdigit:] 十六进制数字
            [:graph:] 可打印的非空白字符
            [:print:] 可打印字符
            [:punct:] 标点符号
    正则表达式匹配次数
        匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数
            * 匹配 前面的字符任意次,包括0次 次
                贪婪模式:尽可能长的匹配

            .* 任意 长度的任意字符

            文本处理及正则表达式

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

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

             文本处理及正则表达式

            \{n\} 匹配前面的字符n次

             文本处理及正则表达式

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

            文本处理及正则表达式

            \{,n\} 匹配前面的字符至多n次
            \{n,\} 匹配前面的字符至少n次
        位置锚定:定位出现的位置
            ^ 行首锚定,用于模式的最左侧

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

          文本处理及正则表达式

          文本处理及正则表达式
        ^PATTERN$ 用于模式匹配整行

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

        文本处理及正则表达式

        \< 或\b 词首锚定,用于单词模式的左侧
        \> 或\b 词尾锚定;用于单词模式的右侧

        \<PATTERN\>

        文本处理及正则表达式

        文本处理及正则表达式

        文本处理及正则表达式

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

        文本处理及正则表达式

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

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

          示例: \(ab\+\(xy\)*\)
                \1 :ab\+\(xy\)*
                \2 :xy

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

       文本处理及正则表达式

       或则:\|

          示例:a\|b: a 或b C\|cat: C 或cat \(C\|c\)at:Cat 或cat
    egrep及扩展的正则表达式
        egrep = grep -E
        egrep [OPTIONS] PATTERN [FILE…]
        扩展正则表达式的元字符:
        字符匹配:
            . 任意单个字符
            [] 指定范围的字符
            [^] 不在指定范围的字符
    扩展正则表达式
        次数匹配:
            * :匹配前面字符任意次
            ?: 0 或1次
            + :1 次或多次
            {m} :匹配m次
            {m,n} :至少m ,至多n次
        位置锚定:
            ^ : 行首
            $ : 行尾
            \<, \b : 语首
            \>, \b : 语尾
        分组:()
        后向引用:\1, \2, …
        或者:
            a|b: a 或b
            C|cat: C 或cat
            (C|c)at:Cat 或cat

fgrep:不支持正则表达式

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

(1)
danrandanran
上一篇 2017-05-31 22:54
下一篇 2017-05-31 23:12

相关推荐

  • CentOS6 网络管理之网卡配置及简单路由设置

    CentOS6中关于网络配置的命令有很多,本文将介绍几个平时最长用的几个命令,以及网卡IP地址的配置和简单路由配置。 1、经常使用的查看IP地址命令为 ifconfig,不跟参数的情况下默认查看所有已启用的网卡信息,如下图所示: 如果想查看具体某块网卡信息,则可以在ifconfig后面跟上网卡设备,如只查看eth0的信息则执行:ifconfig eht0 即…

    Linux干货 2016-09-05
  • 01day-计算机与操作系统基础

    第1章 计算机基础 1.1 什么是计算机 计算机是个笼统的概念,泛指一切计算功能的机器。这样扯的话,以前的算盘也是计算机了。我们现在的计算机应该称作电子计算机,我天朝人民称为电脑。听说谷歌在研究量子计算机,完全不懂是什么玩意。 一不小心在百度百科看到还有光子计算机,生物计算机,吓我一跳,赶紧复制链接过来,自己慢慢看《百度百科—-计算机》 &nbs…

    Linux干货 2016-06-29
  • 【linux】正则表达式之grep、egrep、元字符

    正则表达式:     又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。是一类字符所书写的模式,其中许多字符(元字符)不表示其字面意义,而是表达控制或通配等功能。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符…

    Linux干货 2015-04-01
  • Linux文件系统权限详解

    一、综述 在用户和组的管理中介绍了Linux系统是用户多任务的分时操作系统,这意味着同时可以有多人在同一台pc上进行不同的操作。为了能够保护每个用户的数据安全,针对不同的用户设置相应的权限是非常重要的。 Linux文件系统权限主要针对三类用户: 文件的所有者: owner,用u标识 文件的所有组:group,用g标识 其他人: other,用o标识。不包含在…

    Linux干货 2016-08-04
  • linux系统文件的元数据

    linux系统文件的元数据 什么是元数据 文件的数据分两种: 一种元数据,既属性数据:metadata 一种就是数据本身:data 如何查看元数据: stat stat命令用于显示文件的状态信息 [root@localhost ~]# stat /tmp/mylinux File: ‘/tmp/mylinux’ Size: 143 Blocks: 0 IO …

    Linux干货 2018-03-11
  • 马哥教育网络班21期+第3周课程练习

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 //使用who命令列出列出当明显登录的所有用户,使用cut命令取出用户名,使用sort命令去重即可// [root@localhost ~]# who | cut -d' ' -f1…

    Linux干货 2016-08-08