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

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

相关推荐

  • 91-ansible

    一. Ansible      Configuration、Command and Control

    2016-11-18
  • linux sed命令

    linux sed命令 简介: sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(patternspace),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件…

    学员作品 2016-08-10
  • 马哥教育网络班20期-第八周课程作业

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 网桥将两个相似的网络连接起来,并对网络数据的流通进行管理。它工作于数据链路层,不但能扩展网络的距离或范围,而且可提高网络的性能、可靠性和安全性。 集线器的英文称为“Hub”。主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。它…

    学员作品 2016-09-08
  • sed 流编辑器使用详解

    一、Stream EDitor, 行编辑器   sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出…

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

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

    学员作品 2016-08-15
  • 鸟哥马哥齐相聚,linux界最强音

    台湾著名Linux网站——“鸟哥的Linux私房菜”的站长蔡德明,2015年3月28日受邀到51CTO进行交流,51cto学院还特此邀请大陆linux权威专家马哥参与了本次活动,在轻松愉快的氛围下,马哥和鸟哥以及其他专家人员对于“容器虚拟化下运维调度层的设计”,“Linux在云计算的应用”,“可视化集成运维平台最佳实践”等三个议题展开思想的碰撞。本次马哥和鸟…

    2015-03-30