在本次课程中,本以为和前面的内容难度差不多,内心毫无提防,但在做随堂练习的时候,被惨虐,不由得使我想起了高三时候拿到一张数学单元练习题,一道题也不会做的那种感觉,无助,彷徨,不甘。到了晚上总结了一下,还是有缘由可寻的。直接原因就是前面知识记得不牢固,也并未完全理解是和意思,尤其是tr命令,适用于何处,没按照5W1H方法来进行总结学习,导致应用的时候思路不清,不能做到学以致用。以后的学习还得更用心,同时讲究方式方法啊。
为何要使用文本处理工具和正则表达式,原因在于以前学过的tr,cut等命令大多数适合处理小部分字符,并且效率有限,所以更近一步搭配使用grep。正则的出现是为了精准的对所需要的字符串进行匹配,更加高效的查找。
1.
查看文本内容
less: opposite of more
more
两个功能类似,less更全面一点,可以向前翻页,pageup,pagedown
还可以/进行字符搜索
2.文件截取
head
-c 指定获取文件前多少字节
-n 取行
– # 等同取-n
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
行数 字数 字符数 文件名称
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