文本处理工具及grep命令的理解与使用

1. 文本处理工具

  1.1 文件查看命令cat tac

    cat命令:连接文件并在标准输出上面显示出来

blob.png

 图 1-1   cat帮助文档   

    cat [option]…[file]…

        -E 显示行结束符

        -n 对显示的每一行进行编号 

        -A 显示所有的控制符

        -b 非空行号

        -s 压缩连续的空行成一行

blob.png

       图 1-2  cat命令使用 

    tac 也是文件查看命令,它与cat相反,cat是顺序查看,从文件头部开始逐行显示内容,tac正好相反,它是从文件尾部开始逐行向上显示,所以当用户使用该命令查看文件时,最先显示的是文件尾部的内容,文件头部内容是最后显示的。

  2.1  分页查看文件more less

     more 分页查看文件 

blob.png

图 1-3  more帮助文档

      more [option]…file…

       -d 显示翻页及退出提示

      less 一页一页地查看文件或stdin输出blob.png

图 1-4  less帮助文档 

      less [option]…file…

      查看时可以使用 /文本 搜索 文本  n/N 跳到上一个或下一个匹配

    

   head 显示文本前n行内容

      head [option]…file…

        -c n 指定获取前n个字节

        -n n 指定获取前n行

        -#  指定行数blob.png

图 1-6  head命令使用

   tail 从文件尾部开始查看

     tail [option]…file… 

       -c n 指定获取后n个字节

       -n n 指定获取后n行

       -# 指定行数

       -f 跟踪显示文件新追加的内容

blob.png

图 1-7  head命令使用

  3.1 按列抽取文本cut及合并文件paste

    cut [option]…file…

blob.png

图 1-8  cut帮助文档

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

       -f fields 字段

       -c 按字符切割

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

  blob.png

                    图 1-9  cut命令使用

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

      paste [option]…file…

        -d 指定分隔符

        -s 所有的行合成一行

blob.png

            图 1-10  paste命令使用

  4.1 文本数据统计及排序

    4.1.1 wc命令可以统计计数单词总数,行总数,字节总数和字符总数

blob.png

图 1-11  wc帮助手册

    wc 

     -l 只对行进行计数

     -w 只对单词总数计数

     -c 只对字节总数计数

     -m 只对字符总数计数

blob.png

           图 1-12  wc命令使用

  4.1.2 文本排序sort

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

blob.png

图 1-13  sort帮助文档

      -r 执行反向整理

      -n 执行按数字大小整理

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

      -u 选项删除输出中的重复行

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

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

blob.png

图 1-14  sort命令使用

 4.1.3 uniq命令

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

blob.png

图 1-15  uniq帮助文档

     uniq [option]…file…

       -c 显示每行重复的次数

       -d 仅显示重复的行

       -u 仅显示不存重复的行

     常与sort命令一起配合使用

      sort file | uniq -c

blob.png

图 1-16  uniq命令使用

2.文本处理三剑客之grep

    grep 文本过滤工具

       Global search REgular expression and Print out the line

       作用 文本搜索工具,根据用户指定的"模式"对目标文本逐行进行匹配,打印匹配到的行。

       模式 有正则表达式字符及文本字符编写成的过滤条件

blob.png

图 2-1 grep帮助文档

    grep [option] pattern [file]…

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

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

       -i 忽略大小写

       -n 显示匹配的行号

       -c 统计匹配的行数

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

       -q 静默模式

       -A n after 后n行

       -B n before 前n行

       -C n context 前n行后n行

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

       -w 正行匹配整个单词

       -E 使用ERE

blob.png

图 2-2 grep命令使用

  egrep grep的扩充版本,优化了一些grep的语法,扩充了grep支持的功能

    egrep=grep -E

      egrep [option] pattern [file…]

3.正则表达式及扩展正则表达式

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

  正则表达式分为:

     基本正则表达式:BRE

     扩展正则表达式:ERE     blob.png

 图 3-1 正则表达式帮助文档

   blob.png

                 图 3-2 正则表达式

  正则表达式:

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

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

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

        ^PATTERN$ 用于模式匹配整行

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

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

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

        \<PATTERN\> 匹配整个单词

    分组:

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

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

        \1表示从左侧起,第一个左括号以及与之匹配右括号之间的模式所匹配到的字符,引用前面分组括号中的模式所匹配到的字符而非模式本身。 

blob.png

           图 3-3 正则表达式位置锚定

  扩展正则表达式

    次数匹配:

      *   匹配前面字符任意次

      ?  0次或1次

      +   1次或多次

     {m}  匹配m次

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

    位置锚定

      ^     行首

      $     行尾

      \<,\b  词首 

      \>,\b  词尾

    分组

      ()

      向后引用 \1,\2…

    或者

      a|b

      C|cat C或cat

     (C|c)at Cat或cat

blob.png

             图 3-3 egrep命令使用

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

(0)
Stupid_LStupid_L
上一篇 2016-08-07
下一篇 2016-08-07

相关推荐

  • shell脚本总结

    shell脚本简要总结 脚本调试 bash -n /path/to/some_script检测脚本中的语法错误 bash -x /path/to/some_script调试执行 变量 环境变量 变量声明、赋值:export name=VALUEdeclare -x name=VALUE 变量引用:$name, ${name} 显示所有环境变量: export…

    Linux干货 2016-08-21
  • 第四周学习总结

    写在最前 忙碌的一周又过去了,通过日夜兼程的追赶,也算基本上赶上了大部队的步伐。本周将继续对上一周的内容进行回顾加深,以达到对用户更加熟悉的管理,并讲讲三剑客中的老三。 知识详解 上一周我们说到了用户的管理,其中有像useradd、usermod、groupadd、passwd和userdel等非常重要的命令,每个用户都有自己特定的角色,在系统上完成不同的功…

    2017-12-24
  • 软件包管理工具的使用及yum源仓库的配置

    我们知道CentOS,本质上是RedHat的社区版,其无论是功能还是软件配置上都与RedHat保持一致,因此CentOs系列的软件包管理主要的也是rpm和yum工具。 RPM包管理 rpm包管理工具可以说是历史悠久、名声斐然了。rpm起初是RedHat公司研发的软件包管理工具,即RedHat Package Managemer。但由于其性能突出,在开源界得到…

    Linux干货 2016-11-06
  • Linux用户和组管理

    进程以其发起者的身份运行; 进程对文件的访问权限,取决于发起此进程的用户的权限;   系统用户:为了能够让那后台进程或服务类进程以非管理员的身份运行,通常需要为此创建多个普通用户;这类用户从不用登录系统;     groupadd命令:添加组   groupadd [选项] group_name   -g G…

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

    第一周课程练习 1、描述计算机的组成及其功能?         1.1 现代主流的计算机(冯·诺依曼体系)主要由五部分组成,分别是控制器、运算器、存储器、输入和输出设备。控制器和运算器对应我们现实计算机看到的CPU,存储器对应内存和硬盘等存储设备,输入设备对应鼠标键盘等其它外设,输出设备对应显示器、音响、打印机等其它外…

    Linux干货 2016-06-26
  • LVM(逻辑卷管理)

    LVM 逻辑卷管理 概述:      LVM是将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。与传统的磁盘与分区相比,LVM为计算机提供了更高层次的磁盘存储。它使系统管理员可以更方便的为…

    Linux干货 2016-09-05