私は bash スクリプトを使用して csv ファイルを解析しています。出力は行数と列数を含む表形式になるため、出力をテキスト ファイルの配置の不一致にリダイレクトすると、非常に乱雑に見えます。
私の出力をhtml形式にリダイレクトする方法や、他の代替方法を提案してくれる人はいますか。
前もって感謝します
私は bash スクリプトを使用して csv ファイルを解析しています。出力は行数と列数を含む表形式になるため、出力をテキスト ファイルの配置の不一致にリダイレクトすると、非常に乱雑に見えます。
私の出力をhtml形式にリダイレクトする方法や、他の代替方法を提案してくれる人はいますか。
前もって感謝します
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
簡単な解決策は column(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
TSV で記述し、XSLT スタイルシートで TSV から XHTML に変換します。$'\t'
タブ文字を生成するために bash で使用できます。