文本处理工具系列(一):文本的查看、分析、统计和文本过滤工具

1、文本的查看、分析和统计工具

   <1>文本查看工具  cat tac rev more less head  tail  cut  paste

      cat

        -A:显示所有隐藏的控制符

        -n:显示行号

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

[root@centos6 testdir]# cat -A -n f4
     1	a  $
     2	^I$
     3	b$

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

     paste [OPTION]… [FILE]…

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

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

[root@centos6 testdir]# paste -d* f1 f2
*
CentOS release  6.8(Final)*CentOS release  6.8(Final)
Kernel \r on an \m*Kernel \r on an \m
\l*\l
\n*\n
\t*\t
[root@centos6 testdir]# paste -s f1 f2
	CentOS release  6.8(Final)	Kernel \r on an \m	\l	\n	\t
	CentOS release  6.8(Final)	Kernel \r on an \m	\l	\n	\t

      tac:纵向反向查看内容

      rev:横向反向查看内容

[root@centos6 testdir]# tac f1
abc
c
b
a
[root@centos6 testdir]# rev f1
a
b
c
cba
[root@centos6 testdir]# cat f1
a
b
c
abc

      more:文本查看工具

      less:more的升级版,功能更加强大,man命令使用的分页器

        翻页

        space: 向下翻一页

        b:向上翻一页

        ctrl+d:向下翻半页

        ctrl+u:向上翻半页

        enter:向下翻一行

        命令

        !:可临时执行命令

        查找

        / KEYWORD:向上搜索

           n:同向搜索

           N:反向搜索

        ? KEYWORD:向下搜索  

           n:同向搜索

           N:反向搜索

      head:默认查看前十行

        -#:查看文本的前几行

      tail:默认查看后十行

        -#:查看文本的后十行

        注意:这俩者组合可查看特定的一行

              监控日志:tail -n 0 -f /var/log/messages &  

              查看后台程序:jobs

              调出后台程序:fg1

      cut [OPTION]… [FILE]…

         -d 分隔符:指明分隔符

         -f:指明截取字段           

             #: 第#个字段

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

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

             混合使用:1-3,7

   <2>文本统计工具  wc  sort  uniq

      wc [OPTION]… [FILE]…

        常用选项:

          -l:记录行数

          -w:记录单词数

          -c:记录字符数

      sort [OPTION]… [FILE]…

        命令功能:排序

        常用选项

          -n:按照数字大小排序

          -r:反向排序

          -t:指定分隔符

          -k:指定排序的字段

      uniq [OPTION]… [INPUT [OUTPUT]]

        命令功能:统计

        常用选项

          -c:显示相邻的行重复的次数         

          -d: 仅显示相邻重复过的行

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

[root@centos6 testdir]# cat f1
a
a
c
a
[root@centos6 testdir]# uniq -d f1
a
[root@centos6 testdir]# uniq -u f1
c
a

      注意:常用sort | uniq -c组合统计重复的行

   <3>文本分析工具

      diff FILE1 FILE2

[root@centos6 testdir]# cat f1
a
b
c
[root@centos6 testdir]# cat f2
a
[root@centos6 testdir]# diff f1 f2
2,3d1
< b
< c
[root@centos6 testdir]# diff f2 f1
1a2,3
> b
> c

2、文本过滤工具—grep和egrep

   <1>介绍正则表达式

      一种通过匹配模式,对文本进行行过滤的工具,在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,小到著名编辑器EditPlus,大到Microsoft Word、Visual Studio等大型编辑器在各种编程语言中应用广泛,入门较难,但只要正真理解,你就会发现它的强大。grep是应用正则表达式的工具,egrep只是在grep的基础上做了简单的升级,并无实质性差异。 

   <2>grep用法格式

      grep [OPTIONS] PATTERN [FILE…]

      常用选项        

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

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

        -i: 忽略字符大小写

        -q:静默模式,常用于条件判断

        -A #: after, 后#行        

[root@centos6 testdir]# grep -A1 ^root /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

        -B #: before, 前#行

        -C #:context, 前后各#行

        -E:使用ERE

   <3>正则表达式和扩展正则表达式匹配模式

      注:空白处无意义

分类

符号

ERE

BRE

字符匹配

.

单个字符

单个字符

字符匹配

?

字符匹配

*

其前面的字符任意次

其前面的字符任意次

字符匹配

.*

任意长度任意字符

任意长度任意字符

字符匹配

[]

指定范围内任意一个字符

指定范围内任意一个字符

字符匹配

[^]   

指定范围外任意一个字符

指定范围外任意一个字符

字符匹配

[0-9]

任意一个数字

任意一个数字

字符匹配

[a-z]

任意一个小写字母

任意一个小写字母

字符匹配

[A-Z]

任意一个大写字母

任意一个大写字母

字符匹配

[[:digit:]]

任意一个数字

任意一个数字

字符匹配

[[:lower:]]

任意一个小写字母

任意一个小写字母

字符匹配

[[:upper:]]

任意一个大写字母

任意一个大写字母

字符匹配

[[:alpha:]]

任意一个字母

任意一个字母

字符匹配

[[:alnum:]]

任意一个字母或数字

任意一个字母或数字

字符匹配

[[:space:]]

任意一个空格符

任意一个空格符

字符匹配

[[:punct:]]

任意一个标点符号

任意一个标点符号

位置锚定

^

锚定行首

锚定行首

位置锚定

$

锚定行尾

锚定行尾

位置锚定

\<

锚定词首

锚定词首

位置锚定

\>

锚定词尾

锚定词尾

次数匹配

\?;?

前面的字符0次或1次

前面的字符0次或1次

次数匹配

\+;+

前面的字符至少1次

前面的字符至少1次

次数匹配

m次,格式\{m\}

m次,格式{m}

次数匹配

至少m次,格式\{m,\}

至少m次,格式{m}

次数匹配

至多n次,格式\{0,n\}

至多n次,格式{0,n}

次数匹配

m次到n次,格式\{m,n\}

m次到n次,格式{m,n}

分组引用

\1,\2分组,格式\(\)

\1,\2分组,格式()

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

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

相关推荐

  • 关于shell变量计算中单中括号与双中括号、单引号与双引号的一些看法

      单中括号是比较基本的变量计算及数值比较的方法,一般情况下已经足够使用;双中括号是扩展的数值比较方法,里面的数值计算也相对来说复杂些。这里我推荐大家平常工作中使用单中括号即可,满足日常的工作,不做运维开发的话,双括号方面涉及不多。   这里我还得提下单括号与双括号,这里也是我经常混淆的地方,其实理解了也就轻松多了。单括号是对一段比较长的…

    学员作品 2016-08-15
  • 马哥教育网络班20期+第10周课程练习

     1. 请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) 1. 加电自检:POST     通电后主板CMOS中的BIOS(基本输入输出系统)将进行硬件自检并简单设置,根据硬盘等     相关设备情况进入下一步   &…

    学员作品 2016-08-15
  • 【惊爆】马哥linux2016最新全套课程(内部泄密版)

    你知道么,马哥linux2016最新全套课程(内部泄密版)被曝光了,小编刚刚得到消息,然后就给大家分享出来了,大家快来点评下,话说2016版课程如何?且听小编慢慢为你道来 全新内容,全新阵容,引入ELK和Docker内容,更加贴合生产环境应用,全新的Centos7搭载完善的实战实验室,强大的不像实力派,特别需要说明的一点:0首付0利率,机会不容错过!!! 高…

    学员作品 2015-10-21
  • 马哥linux特推出“你学习,我买单—免费公开课”的活动

    马哥linux特推出“你学习,我买单—免费公开课”的活动 为了感谢广大linux爱好者对马哥教育的一路陪伴和支持。时值五一佳节来临之际,马哥linux特推出“你学习,我买单—免费公开课”的活动,本期分享主题为:“Linux运维架构师成长必经之路”,后期我们将会不断的推出更多免费精彩课程和大家一起分享, 具体报名方式以及问题咨询,请加入…

    学员作品 2015-04-22
  • Linux进程查看和管理及作业控制

    在linux系统中,内核的功用有:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等,在这众多的模块中,进程管理是相对重要的一环,即使不像文件系统和网络功能那么复杂。在进程管理中,内核对进程的创建、切换、撤销和调度都有很详细的定义。  1、进程类型     守护进程:在系统引导过程中启动的进程,跟终端无关的进…

    学员作品 2016-11-14
  • 正则表达式

    grep:Global search REgular expression and Print out the line         文本搜索工具,根据用户指定的”模式“对目标文本逐行进行匹配检查;打印匹配到的行        模式:由正则表达式字符及文本字符所编写的过滤条件…

    Linux干货 2016-08-08