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

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
下一篇 2016-08-08

相关推荐

  • linux操作系统rpm软件包管理

    软件包管理 软件包运行环境: API:Application Programming Interface     使用标准:POSIX:     源代码运行步骤:预处理(如处理注释)—>编译成汇编代码—>链接其他库文件 ABI:applicatio…

    2016-08-22
  • Linux普通权限及特殊权限讲解

    1.文件权限 文件权限主要是针对三类对象进行定义的:                          &nb…

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

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

    学员作品 2015-04-22
  • 2016/08/03:用户管理与权限

    名称解析:User IDentifier UID 组名:Group IDentifier GID                                     &nbsp…

    学员作品 2016-08-05
  • 马哥教育网络班20期+第10周博客作业

    4、写一个脚本   (1) 能接受四个参数:start, stop, restart, status    start: 输出“starting 脚本名 finished.”    …   (2) 其它任意参数,均报错退出;     #!bin/b…

    学员作品 2016-12-05
  • 马哥linux运维雄鹰社团第一届博客大赛

    能登上金字塔塔顶的只有鹰和蜗牛 世界那么大,我想去看看!我带着你,你带着钱,想去哪去哪!来马哥教育,夺博客大赛最佳,实现人生巅峰! 面对现状你该如何抉择 亲爱的学员们,自己一个人学习是否缺乏动力呢? 是否不知道其他人的学习进度参考,而不能及时激励自己奋进呢? 是否每每懊悔自己没有利用好时间,而导致学习进度大幅落下呢? 马哥linux为你点亮通向远方的一盏灯 …

    2015-05-20