2016/08/07:文本处理工具及正则表达式

  在本次课程中,本以为和前面的内容难度差不多,内心毫无提防,但在做随堂练习的时候,被惨虐,不由得使我想起了高三时候拿到一张数学单元练习题,一道题也不会做的那种感觉,无助,彷徨,不甘。到了晚上总结了一下,还是有缘由可寻的。直接原因就是前面知识记得不牢固,也并未完全理解是和意思,尤其是tr命令,适用于何处,没按照5W1H方法来进行总结学习,导致应用的时候思路不清,不能做到学以致用。以后的学习还得更用心,同时讲究方式方法啊。



为何要使用文本处理工具和正则表达式,原因在于以前学过的tr,cut等命令大多数适合处理小部分字符,并且效率有限,所以更近一步搭配使用grep。正则的出现是为了精准的对所需要的字符串进行匹配,更加高效的查找。

1.

查看文本内容

less: opposite of more

more

两个功能类似,less更全面一点,可以向前翻页,pageup,pagedown

还可以/进行字符搜索

2.文件截取

  head

    -c 指定获取文件前多少字节

    -n 取行

    – # 等同取-n 

head.png

  tail

    -c 后多少字节

    -n 后几行

    -#

    -f 跟踪显示文件新追加的内容,常用于日志监控

3.

cut 抽取文本字段

    -d 指明分隔符

    -f #

    -f1-3,7 打印1,2,3,7字段

    -c11-29 :打印从左至右第11字符到第29字符

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

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

    paste f1 f2

    paste -s  f1 f2

5.分析文件工具,整理统计,比较

    wc:数据统计

    $wc f1

  39      237   1901     f1

  行数  字数   字符数   文件名称

QQ截图20160807173114.png

 wc

  -l line:只计行数

  -w   单词数

  -c  数字总节数

  -m 字符总数

 sort

  -r

  -n 执行数字大小整理

  -f 

  -u 删除输出中的重复行

  -t c :选项使用c作为定界符

  -k X :按照X列来排序

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

  -c 显示每行重复重复出现的次数

  -d 仅显示重复的行

  -u 仅显示不曾重复的行

 diff 比较两个文件之间的区别

****************************

随堂练习

     1、找出ifconfig命令结果中本机的所有IPv4地址

    2、查出分区空间使用率的最大百分比值

    3、查出用户UID最大值的用户名、 UID及shell类型

    4、查出/tmp的权限,以数字方式显示

    5、统计当前连接本机的每个远程主机IP的连接数,并按从大

    到小排序

******************************

******************************

******************************

******************************

******************************

******************************

******************************

******************************

******************************

******************************

******************************

文本处理第一大剑客

grep:Global search REgular expression and Print out the line

用指定模式进行逐行匹配

grep 

–color=auto:匹配到的文本着色,最好写入环境变量中~/.bashrc

-v 取反,显示不能被匹配到的行

-i 忽略字符大小写

-n 显示行号

-c 统计匹配到的行数

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

-q 静默模式,无任何输出

-A after,后几行

-B before,前几行

-C 前后各n行

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

grep -e 3 -e 9

-w

-E ERE,=egrep,扩展的正则表达式

****************************

****************************

****************************

REGEXP

字符匹配

. 任意单个字符

[] 括号内的任意单个字符

[^] 指定范围外的任意单个字符

[:alpha:] 所有字母

[:alnum:] 数字和字母

[:punct:] 标点符号

[:digit:] 所有数字 

次数匹配

* 匹配前面的字符任意次,包括0次,贪婪模式

.* 任意长度的任意字符

\?  前面的字符0或者1次

\+ 匹配前面的字符至少一次

\{m\} 匹配前面的字符至少m次

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

位置锚定

^ 行首锚定

$ 行尾锚定

^$ 空行

^PATTERN$ 用于模式匹配整行

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

\< 词首锚定 \b

\> 词尾锚定 \b

\<PATTERN\> 匹配整个单词

***

分组  分组括号中的模式匹配到的内容会被正则表达式引擎记录

 于内部的变量中,这些变量的命名方式为: \1, \2, \3, …

后向引用:引用前面模式匹配到的字符

********************

随堂练习2

   1.显示/proc/meminfo文件中以大小s开头的行; (要求:使

用两种方式)

    2、显示/etc/passwd文件中不以/bin/bash结尾的行

    3、显示用户rpc默认的shell程序

    4、找出/etc/passwd中的两位或三位数

    5、显示/etc/grub2.cfg文件中,至少以一个空白字符开头的

    且后面存非空白字符的行

    6、找出"netstat -tan"命令的结果中以'LISTEN'后跟0、 1

    或多个空白字符结尾的行

    7、添加用户bash、 testbash、 basher以及nologin(其shell为

    /sbin/nologin),而后找出/etc/passwd文件中用户名同shell名

    的行

************************

egrep

次数匹配

?0或1次

+ 至少一次

{m} 匹配m次

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

分组:

()

后向引用 \1,\2

或者

a|b:

C|cat:

(C|c)at或cat

******************************

随堂练习3

    1.显示当前系统root、 mage或wang用户的UID和默认shell

    2、找出/etc/rc.d/init.d/functions文件中行首为某单词(包

      括下划线)后面跟一个小括号的行

    3、使用egrep取出/etc/rc.d/init.d/functions中其基名

    4、使用egrep取出上面路径的目录名

    5、统计以root身份登录的每个远程主机IP地址的登录次数

    6、利用扩展正则表达式分别表示0-9、 10-99、 100-199、

    200-249、 250-255

    7、显示ifconfig命令结果中所有IPv4地址

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

(0)
000000
上一篇 2016-08-07 22:05
下一篇 2016-08-07 22:05

相关推荐

  • Linux 内存管理

    1.Linux 进程在内存数据结构      可以看到一个可执行程序在存储(没有调入内存)时分为代码段,数据段,未初始化数据段三部分:      1) 代码段:存放CPU执行的机器指令。通常代码区是共享的,即其它执行程序可调用它。假如机器中有数个进程运行相同的一个程序,那么它们就…

    Linux干货 2015-04-13
  • alias——Linux基本命令(4)

    1.     alias别名 (1)查看、设置别名 Linux系统提供了一个有用的工具叫alias,可以让我们将一些需要频繁使用的但又过于冗长的命令设置一个别名,这样一来,以后只需输入一个简短的别名就可以达到同样的作用。 alias显看当前已定义的别名   使用aliasaliname=’comm…

    2017-07-13
  • 高性能集群软件Keepalived

    Keepalived的介绍以及安装与配置

    2017-09-18
  • Linux文本处理三剑客之sed

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

    Linux干货 2016-08-15
  • 网络管理3

    一、知识整理 1、跨网络通信:路由 路由的分类:主机路由;网络路由;默认路由。 将主机接入网络,需要配置网络相关设置。一般包括如下内容:主机名;IP/MASK;路由:默认网关;DNS服务器:主、次、第三DNS服务器。 2、网络配置文件:IP、MASK、GW、DNS相关配置文件 /etc/sysconfig/network-scripts/ifcfg-IFAC…

    Linux干货 2016-09-10
  • LVM逻辑卷的缩减与删除,LVM逻辑卷快照,btrfs文件系统,网络管理

    逻辑卷缩减 缩减的时候要注意缩减的空间不要超过文件系统的空间,不然缩减的时候会损坏文件系统。 第一步要先取消挂载(必须) 第二部检查文件完整性(必须) e2fsck -f /dev/vg0/lv0 第三部文件系统缩减,先缩减文件系统. resize2fs /dev/vg0/lv0 10G  (缩减到剩下10G) 第四步逻辑卷组的缩减 lvreduc…

    Linux干货 2016-09-06