Linux下常用文本处理命令

Linux下面有很多经典的非常有用的命令,其中处理文本的命令就有很多。这些小工具经过了几十年时间的洗礼,现在已经变成了经典,已经变成了Linux下面的标准,其实它们一直是遵循着Linux的标准。下面就让我们一起看看这些经典的Linux文本处理命令。

一. sort

文件排序,通常用在管道中当过滤器来使用。这个命令可以依据指定的关键字或指定的字符位置,对文件行进行排序。使用-m选项,它将会合并预排序的输入文件。想了解这个命令的全部参数请参考这个命令的info页。

二. tsort

拓扑排序,读取以空格分隔的有序对,并且依靠输入模式进行排序。

三. uniq

这个过滤器将会删除一个已排序文件中的重复行。这个命令经常出现在sort命令的管道后边。

四. expand, unexpand

expand命令将会把每个tab转化为一个空格。这个命令经常用在管道中。

unexpand命令将会把每个空格转化为一个tab。效果与expand命令相反。

五. cut

一个从文件中提取特定域的工具。这个命令与awk中使用的print $N命令很相似,但是更受限。在脚本中使用cut命令会比使用awk命令来得容易一些。最重要的选项就是-d(字段定界符)和-f(域分隔符)选项。

六. paste

将多个文件, 以每个文件一列的形式合并到一个文件中,合并后文件中的每一列就是原来的一个文件。与cut结合使用,经常用于创建系统log文件。

七. join

这个命令与paste命令属于同类命令。但是它能够完成某些特殊的目地。这个强力工具能够以一种特殊的形式来合并两个文件,这种特殊的形式本质上就是一个关联数据库的简单版本。

join命令只能够操作两个文件。它可以将那些具有特定标记域(通常是一个数字标签)的行合并起来,并且将结果输出到stdout。被加入的文件应该事先根据标记域进行排序以便于能够正确的匹配。

八. head

把文件的头部内容打印到stdout上(默认为10行,可以自己修改)。这个命令有一些比较有趣的选项。

九. tail

将一个文件结尾部分的内容输出到stdout中(默认为10行)。通常用来跟踪一个系统logfile的修改情况,如果使用-f选项的话,这个命令将会继续显示添加到文件中的行。

十. wc

wc可以统计文件或I/O流中的”单词数量”。

十一. fold

将输入按照指定宽度进行折行。这里有一个非常有用的选项-s,这个选项可以使用空格进行断行(译者:事实上只有外文才需要使用空格断行,中文是不需要的)(请参考例子 12-23和例子 A-1)。

十二. fmt

一个简单的文件格式器。通常用在管道中,将一个比较长的文本行输出进行”折行”。

十三. col

这个命令用来滤除标准输入的反向换行符号。这个工具还可以将空白用等价的tab来替换。col工具最主要的应用还是从特定的文本处理工具中过滤输出,比如groff和tbl。(译注:主要用来将man页转化为文本。)

十四. column

列格式化工具。通过在合适的位置插入tab,这个过滤工具会将列类型的文本转化为”易于打印”的表格式进行输出。

十五. colrm

列删除过滤器。这个工具将会从文件中删除指定的列(列中的字符串)并且写到文件中,如果指定的列不存在,那么就回到stdout。colrm 2 4