我正在使用bash脚本解析csv文件,我的输出将以表格形式显示行数和列数,因此当我将输出重定向到文本文件对齐不匹配并且看起来如此混乱时。
任何人都可以指导我如何将输出重定向到html格式或建议我使用其他任何方式。
提前致谢
答案 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