Shell

是否有用於輸出製表符分隔列的簡單命令?

  • July 11, 2020

例如,我有一個文件(用 生成echo -e "var1\tvar2\t\var3\tvar4" > foo),輸出為:

$ cat foo
case    elems   meshing nlsys
uniform 2350    0.076662        2.78
non-conformal   348     0.013332        0.55
scale   318     0.013333        0.44
smarter 504     0.016666        0.64
submodel        360     .009999 0.40
unstruct-quad   640     0.019999        0.80
unstruct-tri    1484    0.01    0.88

我更喜歡這樣的輸出(這裡我使用vimand :set tabstop=14):

case          elems         meshing       nlsys
uniform       2350          0.076662      2.78
non-conformal 348           0.013332      0.55
scale         318           0.013333      0.44
smarter       504           0.016666      0.64
submodel      360           .009999       0.40
unstruct-quad 640           0.019999      0.80
unstruct-tri  1484          0.01          0.88

cat如果我在 bash 中使用,我可以獲得相同的功能$ tabs=15(參見這個問題)。有沒有自動進行這種格式化的程序?我不想在ing 文件tabs之前嘗試該值。cat

我通常為此使用該column程序,它位於bsdmainutilsDebian 上的一個包中:

column -t foo

輸出:

case           elems  meshing   nlsys
uniform        2350   0.076662  2.78
non-conformal  348    0.013332  0.55
scale          318    0.013333  0.44
smarter        504    0.016666  0.64
submodel       360    .009999   0.40
unstruct-quad  640    0.019999  0.80
unstruct-tri   1484   0.01      0.88

摘自column(1)我的系統:

...

-t      Determine the number of columns the input contains and create a
       table.  Columns are delimited with whitespace, by default, or
       with the characters supplied using the -s option.  Useful for
       pretty-printing displays.

...

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