一、文本提取工具
查看内容: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”中的“/”
注意,源文件并未被更改!
转载于:https://blog.51cto.com/wangwenbo/221410