Unit 8 Text Processing tools
Keyword: text
Linux的其中一个设计哲学是尽量将数据存储为文本,所以其也拥有强大的文本处理工具。本节会介绍若干文本处理工具命令。
*cat*
要解释吗?不需要吧?真的需要吗?好吧,稍微提醒一下,cat会把文件的内容用STDOUT输出
*less*
cat一般会和less一块儿用,因为less可以从STDIN输入。比较要注意的是less的在使用中与vi相当类似。
*head*
head –n n为行数,显示头n行
*tail*
tail –n 显示倒数n行
tail –f 实时显示,通常用来监视log的变化
*grep*
grep是一个相当强大的字符串查找工具,由于其支持STDIN,所以可以配合管道使用,即可以配合所有STDOUT的程序使用。换句话说,只要有STDOUT的程序就不需要额外写文本搜索的功能,因为grep就可以提供——这就是Linux的强大之处。
grep –i 搜索时忽略大小写
grep –v 显示符合搜索要求的行号
grep –l 显示符合搜索要求的文件名
grep –r 搜索包含子文件夹
grep --color 将符合搜索要求的词高亮
*wc*
计算字符或单词数,可以支持STDIN。
wc –l 计算行数
wc –w 计算单词数
wc –c 计算字符数
*sort*
排序,输出为STDOUT。
sort –u 去掉重复行
sort –k x 以x列排序
*cut*
截取每一行的指定段落(field)
cut –d(f) (f)代表分隔符,此参数后的分隔符会取代Tab来区分一行的不同字段
cut –fn n是数字,只会取第n字段
*diff*
比较两个文件的异同。最重要是可以生成差异文件。
$diff –u diff1 diff2 >diff.patch将比较文件按标准结果输出
*patch*
提到diff就不得不说patch。通常diff生成的差异后就再用patch 更新旧文件。
$patch –b diff1 diss.patch 参数–b是备份
*aspell*
检查拼写,分为交互模式和非交互模式。
aspell check file 交互模式检查文件
aspell list
*uniq*
报告或消除重复的行(针对行的处理)
*tr*
大小写变换,只支持STDIN。
tr ‘a-z’ ‘A-Z’
*unix2dos*
将UNIX的文本转为DOS的文本。尽管UNIX和DOS默认都是是用ANSI编码,但是格式控制符却不一样,比如回车。可以用cat –A查看。
*dos2unix*
将DOS的文本转为UNIX的文本。
*sed*
也是一个强大字符流编辑工具。其支持文件输入或STDIN。
sed scrpit file其编辑功能主要由脚本实现
sed –e script STDIN
在介绍命令的时候我经常提示STDIN、STDOUT,主要是让读者注意这些文字处理工具最强大之处并非其功能。他们的功能都很单一,而且不复杂,相信有点编程基础的读者都可以写出类似的程序。但他们最大的特点是都符合UNIX编程的哲学:STDIN、STDOUT、simple function。只有这样他们才可以携手合作,作出很复杂的变化。各位可能在读一些Linux的脚本时觉得为啥都这么长,但你细细研读就会发现里面的命令你都很熟悉,但出来的效果却又令人惊叹。这就是Linux的魅力所在。其实各种命令还有相当多的参数和用法,限于作者的精力无法一一尽现,只是选取一些基础的,常用的参数,详细地介绍请自行man。
阅读(664) | 评论(0) | 转发(0) |