2012-06-01 53 views
0

我解析使用bash腳本的csv文件,我的輸出將以表格形式與行數和顏色,所以當我重定向我的輸出到文本文件對齊不匹配,看起來如此混亂。我希望我的bash腳本以html格式輸出?

任何人都可以指導我如何將我的輸出重定向到html格式或建議我與另一種方式。

在此先感謝

+0

爲什麼這個操作,最後你的目標是什麼? –

+0

看到[this](http://stackoverflow.com/questions/2033268/linux-shell-output-to-html)如果它幫助你 –

回答

0

寫出來的TSV,然後有一個XSLT樣式錶轉換從TSV到XHTML。您可以在bash中使用$'\t'來生成製表符。

+0

TSV .. XSLT ....對我來說完全是一個非常新的概念。讓我試試這個:)謝謝你的建議.. –

2

如果您確實不需要HTML中的輸出,但您在使用製表符進行列對齊時遇到問題,則可以使用printf獲得良好的列對齊。

順便說一句,如果你的問題包括一些示例輸入,你用來分析和輸出它的腳本以及一些示例輸出,這將有所幫助。

這裏是printf一個簡單的例子:

$ cat file 
example text,123,word,23.12 
more text,1004,long sequence of words,1.1 
text,1,a,1000.42 

$ cat script 
#!/bin/bash 
headformat='%-*s%-*s%*s%*s\n' 
format='%-*s%-*s%*d%*.*f\n' 
modwidth=16; descwidth=24; qtywidth=6; pricewidth=10 
printf "$headformat" "$modwidth" Model "$descwidth" Desc. "$qtywidth" Qty "$pricewidth" Price 
while IFS=, read model quantity description price 
do 
    printf "$format" "$modwidth" "$model" "$descwidth" "$description" "$qtywidth" "$quantity" "$pricewidth" 2 "$price" 
done < file 

$ ./script 
Model   Desc.      Qty  Price 
example text word      123  23.12 
more text  long sequence of words 1004  1.10 
text   a       1 1000.42 
0

一個簡單的解決沃爾德使用柱(1):

column -t -s, <(echo "head1,head2,head3,head4"; cat csv.dat) 

與像這樣的一個結果是:

head1 head2  head3 head4 
aaaa 33333  bbb  123 
aaa 333333 bbbx 123 
aa  3333333 bbbxx 123 
a  33333333 bbbxxx 123