您的位置:首页 > 其它

RH033 Unit 8 Text Processing Tools

2009-11-03 12:07 344 查看
一、文本提取工具 查看内容:less和cat 最大的区别在于查看长文件内容时,cat全部显示出来,而less会分页查看,更为友好 文件节选:head和tail 顾名思义,一个是头,一个是尾,即head用来查看一个文件开头的内容,tail用来查看一个文件末尾的内容,默认情况下查看开头10行或末尾10行的内容,也可以指定需要查看的行数 编辑一个文件file,内容为一行一个数字,从上到下递增,分别查看前5行和后3行的内容

tail还有另外一个比较常用的选项,-f,用来实时查看文件末尾,可以用作监视系统日志





通过另一个控制台记录日志,这边tail -f会实时更新屏幕返回信息,很实用的功能,ctrl+c退出 按关键字过滤:grep 分别做下面四个实验就能基本明白grep的作用了 1、grep root /etc/passwd 过滤出/etc/passwd中含root的内容

2、grep ^root /etc/passwd 过滤出以root开头的内容

3、grep bash$ /etc/passwd 过滤出以bash结尾的内容

4、grep ^# /etc/inittab –v 过滤出/etc/inittab中除了以#开头的内容,即过滤掉注释信息(先过滤出以#开头的内容,-v表示反向过滤)

按列截取:cut -d选项用来指定截取所参考的分隔符 -f选项指定需截取的内容列号 如只显示出ifconfig eth0中的ipv4地址

命令有点长,分解动作 囧rz 1)ifconfig eth0显示出eth0网卡的信息

2)通过管道传送给grep过滤出我们需要的有ip地址的那一行

3)根据上一行的结果,再次通过管道传送给cut,指定截取以:为分隔符的第二段内容

4)根据上一行的结果,第三次通过管道传送给cut,指定截取以“ ”(空格比较特殊,以引号括起来)为分隔符的第一段内容

二、文本分析工具 文本统计:wc -l:统计行数 -w:词数 -m:字符数 -c:文件字节数

统计出了19个字符,我暂时还不太明白,难道统计也包括了行结束符?高人给指点一下 ^_^ 另外还有其他应用方法,比如想知道本系统现有多少个用户

/etc/passwd记录了系统内所有的用户信息,每个用户一行,只要知道有多少行就知道有多少个用户了,结果是我的系统现在有35个用户 文本排序:sort -n:按数字递增排序 -r:倒序 编辑file,随意写入几行数字

对file内容进行排序

但这个排序结果还是不太完美,毕竟还有些数字是重复的 可以用uniq命令来去除冗余,-c统计荣誉次数

右边为去冗余后的数字序列,左边为每个数字在file文件中出现的次数 文件对比:diff和patch 用来对比两文件的不同,并且可以对旧文件打补丁

分别有old和new两个文件,用diff来对比新旧文件内容并显示出了不同,用-u选项加输出重定向来生成一个file.patch文件,这个.patch文件就记录了2个文件的不同处,并可以用patch命令来给旧文件打补丁使其更新至和新文件内容相同,-b选项表示生成一个旧文件的备份文件old.orig,不过对于更新大文件的操作,一般不用这种备份办法,会比较浪费时间 拼写检测 aspell –c/check 文件名:检查文件内容的拼写 编辑一个拼写错误的文件,正确的拼写应该是“This is a file”,看看aspell能不能纠正过来

输入aspell –c file后,屏幕会出现以下提示

下面给出了几种可能的正确拼写,我们只用选一个我们本身想要表达的那个词,按一下序号就行了,或者直接选择Replace all进行全文自动修正,更改完后会自动退出检测状态,再次查看文件已被更改完毕



也有一种不更改只显示错误的方法,用aspell list命令,将文件通过输入重定向传给aspell,如果错误很多,还可以通过管道传送给wc -l来统计错误数量

文本内容操控工具:tr和sed tr,字符转换,只能从STDIN读取数据,之前讲管道的时候已经有用过tr了,再回顾一下吧,把~/.bash_profile内容中的所有大写字母替换为小写字母,但实际上只输出屏幕并不更改原文件

sed,属于非交互式的编辑器,简单的说,就像流水线一样,告诉它所要做的事情,它会自动一次性完成,也叫流编辑器 无论命令是什么,sed并不与原文件打交道,它操作的只是一个拷贝,然后所有的改动如果没有重定向到一个文件,将输出到屏幕,因为sed是一个非交互性编辑器,必须通过行号或正则表达式指定要改变的文本行,在写一些程序配置脚本时应该很有用,不过本人编程基础比较囧,只做一个简单的演示吧 将/etc/passwd中的所有/bin/bash替换为/sbin/nologin,为了区别表达式中的“/”分隔符,需要用到“\”转义符来协助表示“/bin/bash”和“/sbin/nologin”中的“/”

注意,源文件并未被更改!

本文出自 “Dy!ng_Sou|@51cto” 博客,请务必保留此出处http://wangwenbo.blog.51cto.com/185762/221410
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: