GNU 文本实用程序简介----面向行的过滤(3)
时间:2005-02-04 来源:litie123
这是从寂寞烈火的blog转来的。
作为记录的行
许多 Linux 实用程序将文件视为面向行的记录或数据的集合。这样提供了聚合那些同时对人可读和便于使用工具来处理的数据集合的便利途径。一个简单的技巧就是将每个新行字符看作是记录之间的分隔符,其中每个记录具有类似的格式。
从实用的角度出发,面向行的记录通常应该具有相对有限的长度,或许不应超过几百个字符。虽然没有哪一个文本实用程序内置了这样的限制,但是即使使用自动换行或水平滚动,人类的眼睛也不适应观看过长的行。对于这样的情况,或者可以使用更复杂的结构化数据格式,或者可以将记录分隔到多行(或许还会作一些 grep 能够识别的标记)。
cut
实用程序 cut 将文件中的字段写到标准输出上,其中每行被看作是分隔的字段集合。默认的分隔字符是制表符,但是这可以使用简短形式的选项 -d 或者完整形式的选项 --delimiter=来改变。
您可以使用 -f 开关来选择一个或多个字段。-c 开关则从每行中选择特定的字符位置。两个开关都接受逗号分隔的数字或范围作为参数(包括非封闭范围)。
expand 和 unexpand
实用程序 expand 和 unexpand 分别将制表符转换为空格和把空格转换为制表符。制表符被认为等价于特定数量的列,默认是八个列,因此对应于一个制表符的明确空格数目取决于那些空格或制表符出现在何处。除非指定 -a 选项,否则 unexpand 仅把初始的空格转换为制表符(这种默认设置对于重新编排源代码很有用)。
fold
fold 实用程序简单地迫使文件中的行换行。默认情况下,换行是从第 80 列之后开始,不过您可以指定其他宽度。fold 只具有有限种类的自动换行格式,但是它不会完全重新换行段落。 选项 -s 对于至少迫使在空白处换行是很有用的。
fmt
对于大多数用途来说,fmt 是比 fold 更有用的换行工具。实用程序 fmt 不仅换行,而且同时保留初始的缩进,并聚合行以实现段落对齐(视需要而定)。在传输或最终存储之前,fmt 对于格式化诸如电子邮件消息之类的文档很有用。
GNU 版本的 fmt 提供了几种用于首行和后续行缩进的选项。其中一个有用的选项是 -u,它规格化字间距和行间距(多余的空白将被删除)。
nl
实用程序 nl 对文件中的行编号,并具有决定编号如何出现的各种选项。cat 包含您需要用于大多数目的的行编号选项――在 cat 满足您需要的时候请选择这个更通用的工具。只有在诸如控制前导零的显示这样的特殊情况下,才需要使用 nl(由于历史的原因,cat 并不总是包括行编号)。除了根据编号来讨论行更容易之外,行号还潜在地为下游进程提供排序和过滤规则。
tr
除了显式地转换所列出的字符之外,tr 还支持范围和几种指定的字符类别。
********
更多的信息,可以看他们的手册