我希望我的bash脚本输出为html格式?

时间:2012-06-01 15:02:15

标签: bash

我正在使用bash脚本解析csv文件,我的输出将以表格形式显示行数和列数,因此当我将输出重定向到文本文件对齐不匹配并且看起来如此混乱时。

任何人都可以指导我如何将输出重定向到html格式或建议我使用其他任何方式。

提前致谢

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

在TSV中写出来,然后将XSLT样式表从TSV转换为XHTML。您可以在bash中使用$'\t'来生成制表符。

答案 2 :(得分: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