-1
 bid     bookname        author
 1       unix    sumitaba das
 2       java    balaguruswamy
 3       db      elmasari
 4       c       padma redddy
 5       ada     yeshwant kanetkar
 6       datastructure   padma redddy
 7       microprocessor  padma redddy

我如何格式化上述输出以获得列之间的适当空间,使其如下所示:

bid     bookname        author
1       unix            sumitaba das
2       java            balaguruswamy
3       db              elmasari
4       c               padma redddy
5       ada             yeshwant kanetkar
6       datastructure   padma redddy
7       microprocessor  padma redddy

我正在将 SQL 查询的结果捕获到一个文件中,并在我的程序中显示该文件。

4

2 回答 2

1

在名称中使用“_”临时

awk 'NF==4{$3=$3 "_" $4; $4=""} 1' foo.txt | column  -t  | tr '_' ' '
于 2012-07-27T06:42:17.790 回答
1

看起来您的输入的列由制表符分隔,并且您已经粘贴了将 tabstop 设置为 8 的内容。如果是这种情况,那么您可以利用制表符来改进 slotvinov 的答案:

your_sql_command | column -s '<TAB>' -t

您必须在我编写的命令行中输入一个文字选项卡。要在 shell 命令行中执行此操作,请按 Ctrl-V,然后按 Tab。如果您将其放入 shell 脚本中,只需确保您的文本编辑器插入一个实际的制表符,而不是将其转换为一系列空格。或者根据您的外壳,这可能有效:

your_sql_command | column -s $'\t' -t
于 2012-07-27T06:53:31.380 回答