侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux col命令详解:如何过滤掉反向换行符和空白字符

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命令会显示一个警告信息。
0

评论区