每天一個 Linux 命令:col 命令

1. 命令簡介

col(control)命令是一個標準輸入文本過濾器,它從標準輸入讀取內容,過濾掉控制字符反向換行符(RLF-Reverse Line Feed)和半反向換行符(HRLF-Halt RLF)後輸出到標準輸出。還可以將空白符用等價製表符(Tab)或空格(Space)來替換。

在許多 Linux 說明文件裏,包含控制字符。當我們運用 Shell 特殊字符 > 和 >> 把說明文件的內容輸出成純文本文件時,控制字符會變成亂碼,col 命令則能有效濾除這些控制字符。

2. 命令格式

col [OPTIONS]

3. 選項說明

-b, --no-backspaces
 不輸出任何退格符,只打印寫入每個列位置的最後一個字符
-f, --fine
 允許正向半換行符(half-forward line feeds)。通常,處於半行分界線上的字符打印在下一行
-h, --tabs
 將多個空格轉換爲Tab,一般 4 個 空格轉爲 1 個 Tab
-l, --lines NUMBER
 設置緩衝行爲 NUMBER,默認爲 128
-p, --pass
 不轉換未識別的控制符
-x, --spaces
 將 Tab 轉爲多個空格,一般 1 一個 Tab 轉爲 4 個空格
-H, --help
 顯示幫助信息並退出
-V, --version
 顯示版本信息並退出

4. 常用示例

(1)將 Tab 替換爲空格,一般 1 個 Tab 轉爲 4 個空格。

echo -e "123\t456" | col -x

(2)將空格替換爲 Tab,一般 4 個 空格轉爲 1 個 Tab。

echo -e "123    456" | col -h

(3)將幫助文檔內的控制符刪除。以 col 命令的 manual 爲例。

man col | col -b > newFile

5. 相關疑問

RLF 字符 (reverse line feed) 是反向換行符,HRLF 字符(half-reverse line feed)是半反向換行符。百度知道中有網友的回答,但是我還是不太清楚這兩個字符的作用和應用場景,請知道的大牛評論告知,萬分感謝。

參考文獻

[1] col(1) manual

[2] linux 命令手冊. col 命令

[3] Linux 命令大全. col 命令

[4] Stack Overflow.What is a reverse line feed

轉自:戀貓大鯉魚

https://dablelv.blog.csdn.net/article/details/77145614

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/Il21B218LBx7EeZumCdmFQ