- 功能
expand命令用于將文件中的制表符(tab)轉換為指定數量的空格符(space),默認情況下一個tab對應8個空格符,并將轉換后的內容輸出到標準輸出。如果沒有指定文件名或文件名是“-”,expand會從標準輸入讀取數據。
與之相對的命令是unexpand,它將空格符轉換為制表符。
- 格式
expand [選項] [file]...
- 選項說明
-i, --initial:僅轉換行首的制表符,不轉換非空白符后的制表符。 -t, --tabs=NUMBER:指定一個Tab替換為多少個空格,默認是8個。 -t, --tabs=LIST:指定制表符位置列表,用逗號分隔。(具體用法請有經驗的用戶留言指導,感激不盡) --help:顯示幫助信息。 --version:輸出版本信息。
- 示例
(1)將文件中每行的第一個Tab符替換為6個空格符,但不轉換非空白符后的制表符。
expand -i -t 6 file
原文件內容:
轉換后內容如下:
- 常見問題
(1)不是所有Tab都會轉換為默認或指定數量的空格符。expand命令會根據對齊原則將Tab符替換為適當數量的空格符,確保后續非Tab符位于物理Tab邊界(即Tab size的整數倍)。例如下面的文件:
其中CR和LF分別是Windows下的回車和換行符。使用以下命令轉換后的結果如下圖:
expand -t 4 file
可以看到第一行的第二個Tab符和第二行的所有Tab符并沒有替換為4個空格符,而是按照原內容的對齊格式,替換為適當數量的空格符。
參考文獻
[1] man expand
[2] 縮進與對齊——正確地使用Tab和空格