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

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)
上一篇 2016-08-08 16:13
下一篇 2016-08-08 16:13

相关推荐

  • 磁盘及文件系统管理

    I/O Ports: I/O设备地址文件的处理方式:open,read,write,close设备类型:    块设备:block,存取单位“块”,磁盘    字符设备:char,存取单位“字符”,键盘设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信设备号码: &nbs…

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

    1、创建一个10G分区,并格式为ext4文件系统; (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;     ]#mke2fs -t ext4 -b 2048 -L MYDATA -m&n…

    学员作品 2016-09-07
  • 马哥教育网络第20期-第一周作业

    第一周博客作业1、 描述计算机的组成及其功能。 运算器、控制器、存储器、输入设备、输出设备运算器、控制器 :cpu 运算和逻辑计算存储器:缓存和保存数据输入设备、输出设备:用户和计算机交互设备和界面 2、 按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。 Slackware系列: suse   opensuse debian系列: …

    学员作品 2016-06-23
  • 马哥团队带你领略阿里风景

    马哥团队带你揭秘互联网巨头公司—阿里巴巴 继马哥团队腾讯一行之后,4月中旬我们又来到了坐落于杭州的另一个互联网巨头公司。 波涛万里长江水,带你入杭州。 真情伴你走,春色为你留。 西湖烟水茫茫,百顷风潭,十里荷香。 风景甚好,怎能不去杭州的阿里巴巴转转呢? 带着“淡妆”,走,跟着我们前行…… 马哥更是笑道:“我们这次来是和马云谈合作的!让我们培训出来的更多同学…

    学员作品 2015-04-29
  • 马哥教育网络班20期+第8周博客作业

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。   网桥:链接层设备,基于MAC地址过滤。   集线器:物理层设备,基本都属于半双工模式。集线器与网桥在现在的局域网中基本都不用了。   二层交换机:基本MAC转发数据,功能齐全的可支持VLAN等功能。常见的有100/1…

    学员作品 2016-09-10
  • 文本处理工具sed及文本编辑器vim课程作业

    文本处理工具sed课程作业     1、删除/etc/grub2.conf文件中所有以空白开头的行行首的空白字符         sed -n 's@^[[:space:]]\+@@p' /etc/grub2.cfg &…

    学员作品 2016-08-10