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

相关推荐

  • Bash Shell编程初学基础篇之二

    Bash Shell编程初学基础篇之二    时间如白驹过隙,一晃过去了几周,一切的计划都没有变化快。当你制定计划实施时,在这期间却会发生许多打乱我们计划的事情,但是我们还是要坚持下去,胜利是属于坚持到最后的人!实践出真理,中级基本结束了,需要回过头了好好总结一下了。心中总有好多话想找个同行唠唠;不废话了,估计大家都烦了!总有一天,你会成…

    Linux干货 2015-05-11
  • 学习linux第四天

    Linux学习第4天   Linux内部命令和外部命令    内部命令:实际上是shell程序的一部分,其中包含的是一些比较简单的linux系统命令,这些命令由shell程序识别并在shell程序内部完成运行,通常在linux系统加载运行时shell就被加载并驻留在系统内存中。内部命令是写在bashy源码里面的,其执行速度比外部…

    Linux干货 2016-10-29
  • CentOS 5和6的启动流程

    一、Linux组成     1. linux:kernel+rootfs         kernrl的作用:进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能      &nbsp…

    Linux干货 2016-09-18
  • 文件编辑之神器Sed

    pattern space   //  文本中每行内容都会进入到pattern space中, 如果匹配到了,就会进入到右分支, 如果没有匹配到,则进入左分支。 hold space  //  就是已经被模式匹配到, 并且编辑后保存的内容就是hold space 中. 默认情况下,当没有被匹配之后,没有匹配到…

    Linux干货 2016-08-15
  • 权限解析

    一、文件权限        用户的创建的每个文件,都有自己特定的属性信息,比如文件类型,文件的权限,文件的所有者和所属组,以及文件的修改日期等属性组成。        文件的权限即是指文件本身赋予了用户什么样的权力,也就…

    2017-05-30
  • 集中练习3

    用户管理、文本处理、文件管理相关

    2017-09-20