每天一個 Linux 命令:expand 命令

1. 命令簡介

用於將文件的製表符 Tab 轉換爲空格符 Space ,默認一個 Tab 對應 8 個空格符,並將結果輸出到標準輸出。若不指定任何文件名或所給文件名爲 -,則 expand 會從標準輸入讀取數據。

功能與之相反的命令是 unexpand,是將空格符轉成 Tab 符。

2. 命令格式

expand [OPTIONS] [FILES]

3. 選項說明

-i, --initial
 不轉換非空白符後的製表符
-t, --tabs=NUMBER
 指定一個tab替換爲多少個空格,而不是默認的 8
-t, --tabs=LIST
 指定製表符位置列表,用逗號分隔
--help
 顯示幫助信息
--version
 輸出版本信息

4. 常用示例

(1)將文件中每行第一個 Tab 符替換爲 6 個空格符,非空白符後的製表符不作轉換。

expand -i -t 6 FILE

原文件內容:

轉換後內容如下:

5. 常見問題

(1)不是所有的 Tab 都會轉換爲默認或指定數量的空格符,expand 會以對齊爲原則將 Tab 符替換爲適當數量的空格符,替換的原則是使後面非 Tab 符處在一個物理 Tab 邊界(即 Tab size 的整數倍)。例如下面的文件:

其中 CR 和 LF 分別是 Windows 下的回車和換行符。使用如下命令轉換後的結果如下圖:

expand -t 4 file

可以看到第一行的第二個 Tab 符和第二行的所有 Tab 符並沒有替換爲 4 個空格符,還是按照原來內容的對齊格式,替換爲適當數量的空格符。

參考文獻

[1] expand(1) manual

[2] 縮進與對齊——正確地使用 Tab 和空格

轉自:戀貓大鯉魚

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

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