如何右对齐文件中的列

use*_*711 2 awk sed justify

如何在awk,sed或bash中右对齐文件的列?

我的文件目前左对齐且空格分隔.

我可以用printfrev

这是我的文件的样子:

$ cat file
14,107     aaa  12,436  0.0  0  0  313  0  373
3,806,201  bbb  1,573   0.0  0  0  -25  0  -25
Run Code Online (Sandbox Code Playgroud)

而使用rev并没有给我我正在寻找的输出.

$rev file  | column -t | rev
14,107  aaa  12,436  0.0  0  0  313  0  373
3,806,201  bbb   1,573  0.0  0  0  -25  0  -25
Run Code Online (Sandbox Code Playgroud)

Chr*_*our 7

这里代替一个具体的例子是使用技巧的一般解决方案rev:

$ cat file
a 10000.00 x
b 100 y
c 1 zzzZZ

$ rev file | column -t | rev
a  10000.00      x
b       100      y
c         1  zzzZZ
Run Code Online (Sandbox Code Playgroud)

哪里column -t被你想要做的事所取代.

  • 要解决*»最左边列中的条目必须具有相等宽度«* 的要求,您可以插入一个虚拟列并稍后将其删除:`sed 's/^/a\t/' file | 转 | 列 -t | 转 | 切-c3-`。 (3认同)
  • +1。请注意,这将右对齐每一列。 (2认同)
  • 如果最左边的列的宽度不相同,但仍然很聪明,将无法正常工作 (2认同)