Linux col命令介绍
col命令是column的缩写,它的全称是filter reverse line feeds from input,意思是从输入中过滤掉反向换行符。在许多UNIX文档中,都有RLF(reverse line feed)和HRLF(half reverse line feed)这样的控制字符。当我们使用shell的重定向符号">"和">>",把文档的内容输出成纯文本文件时,控制字符会变成乱码,col命令则能有效地滤除这些控制字符。同时,col命令还可以用空格代替多个空白字符,使输出更加紧凑。这个命令在处理nroff和tbl的输出时很有用。
适用的Linux版本
col命令是一个标准的Linux命令,它适用于大多数的Linux发行版,如Ubuntu、Debian、Fedora、CentOS等。如果你的系统中没有安装col命令,你可以使用以下命令来安装它:
- 对于基于Debian的系统,如Ubuntu,你可以使用apt-get命令:
[linux@bashcommandnotfound.cn ~]$ sudo apt-get install bsdmainutils
- 对于基于Red Hat的系统,如Fedora或CentOS,你可以使用yum或dnf命令:
[linux@bashcommandnotfound.cn ~]$ sudo yum install util-linux
或者
[linux@bashcommandnotfound.cn ~]$ sudo dnf install util-linux
Linux col命令的基本用法
col命令的语法格式如下:
col [选项] [文件]
如果没有指定文件,或者文件为"-",则从标准输入读取数据。如果指定了多个文件,则依次处理每个文件。
Linux col命令的常用选项说明
col命令的常用选项有以下几个:
选项 | 说明 |
---|---|
-b | 过滤掉所有的控制字符,包括RLF和HRLF |
-f | 过滤掉RLF字符,但允许HRLF字符显示出来 |
-h | 输出制表符而不是多个空格 |
-l | 指定缓冲区的列数,默认为128列 |
-p | 强制保留未知的控制序列,不进行过滤 |
-x | 输出多个空格而不是制表符 |
Linux col命令的实例
下面给出一些使用col命令的实例:
- 将man命令的帮助文档保存为man_help.txt,并使用-b选项过滤所有控制字符:
[linux@bashcommandnotfound.cn ~]$ man man | col -b > man_help.txt
- 将nroff格式的文档转换为纯文本格式,并使用-h选项输出制表符:
[linux@bashcommandnotfound.cn ~]$ nroff -man file.1 | col -h > file.txt
- 将tbl格式的表格转换为纯文本格式,并使用-x选项输出空格:
[linux@bashcommandnotfound.cn ~]$ tbl file.tbl | col -x > file.txt
- 将含有反向换行符和半反向换行符的文本显示出来,并使用-f选项保留半反向换行符:
[linux@bashcommandnotfound.cn ~]$ cat file.rlf | col -f
Linux col命令的注意事项
- col命令只能识别和处理一些特定的控制字符和转义序列,如\n, \b, \r, \t, \v, ESC-7, ESC-8, ESC-9, SI, SO等。对于其他未知的控制字符和转义序列,col命令会默认过滤掉它们,除非使用-p选项强制保留。
- col命令会根据输入中的字符集切换来确定输出时是否需要切换字符集。如果输入中有SI(shift in)和SO(shift out)这样的控制字符,col命令会相应地切换到正常字符集或替代字符集。
- col命令会缓冲输入中的一些行,以便处理反向换行符。缓冲区的大小可以通过-l选项来指定。如果输入中的反向换行符超出了缓冲区的范围,col命令会显示一个警告信息。
评论区