2012-07-27 112 views
-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

请修复您的格式,以便我们可以看到你想要的。 – 2012-07-27 05:40:15

+0

我发现今天刚刚加入编辑很困难。我想要的是第三列值从作者的位置开始准确地开始 – user1556718 2012-07-27 05:52:01

+0

感谢编辑-jomoos – user1556718 2012-07-27 06:01:03

回答

1

使用“_”暂时的名字

awk 'NF==4{$3=$3 "_" $4; $4=""} 1' foo.txt | column -t | tr '_' ' ' 
1

它看起来像你的输入有由制表符分隔的列和你贴什么样子与制表位设置为8.如果是这样的话,那么你可以利用这些选项卡来切开裂缝的答案:

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

您必须在我写入的命令行中输入文字选项卡。要在shell命令行上执行该操作,请按Ctrl-V,然后按Tab。如果你把它放到shell脚本中,只要确保你的文本编辑器插入一个实际的选项卡,而不是将它转换为一系列空格。或者取决于你的外壳,这可能工作:

your_sql_command | column -s $'\t' -t 
+0

因此,将管道粘在那里并运行那个漂亮的列命令('./mysql -h localhost -uroot -p“root” result')或者之后执行'column -s $'\ t'-t 2012-07-27 07:06:53

+0

Alan:嘿,我尝试了列的东西,但cygwin不支持列 – user1556718 2012-07-27 08:53:53

+0

Cygwin ...无赖。有一个类似的命令叫'expand',它做几乎相同的事情,但你必须指定列的宽度。而不是'column -s $'\ t'-t',你可以使用'expand -t 10,40'并调整数字,直到它看起来不错。麻烦在于,当更长的书名被添加到数据库时,您可能需要再次调整这些数字。 – 2012-07-27 18:06:39