Coreutils

為什麼 GNU 的 expand 將選項卡轉換為少於 8 列?

  • November 15, 2019

使用expand,我不明白它將製表符轉換為多少個空格。來自info expand

預設情況下,expand 將所有製表符轉換為空格。它在輸出中保留退格字元;他們減少選項卡計算的列數。預設操作等效於 -t 8(每 8 列設置選項卡)。

但是:

$ cat file
aa  bb
$ cat -A file
aa^Ibb$
$ wc -m file
6 file
$ expand file > file2
$ cat -A file2
aa      bb$
$ wc -m file2
11 file2

在這裡,它將選項卡轉換為 6 列。為什麼?

來自OpenGroup 的描述expand

擴展實用程序應將文件或標準輸入寫入標準輸出,並將<tab>字元替換<space>為填充到下一個製表位所需的一個或多個字元。

-t 8將製表分隔 8 個字元。由於輸入aa在製表符之前的行首有兩個其他字元 ( ),因此只需六個空格即可到達下一個製表位。

引用自:https://unix.stackexchange.com/questions/552275