2017-05-16 5 views
0

以下は私のファイルです。私は、すべてのパイプ記号が他のものよりも下にあり、表形式のように見えるように、出力間に一定の幅を維持しようとしています。それをどうすれば実現できますか?また、私は出力を郵送するときに同じ形式を持つ必要があります。カンマ区切りのファイルをきれいに印刷するには?

cat file.txt 
name,score card,ID 
Jack,Available,YES 
Jen,NA,NO 
Jerry,Available,YES 
Padula,NA,YES 
Mackenzi,NA,NO 

sed 's/,/\t|\t/g' c.txt 
name |  score card  |  ID 
Jack |  Available  |  YES 
Jen  |  NA  |  NO 
Jerry |  Available  |  YES 
Padula |  NA  |  YES 
Mackenzi  |  NA  |  NO 

==I want== 
name  |  score card  |  ID 
Jack  |  Available  |  YES 
Jen  |  NA    |  NO 
Jerry  |  Available  |  YES 
Padula |  NA    |  YES 
Mackenzi |  NA    |  NO 
+0

をアーカイブしたい場合は、同じことは、あなたは、事前に必要な列幅を知っていますか?または、各列のコンテンツの最大幅を決定すると思いますか?後者の場合は、どのツールでも2回のパスが必要です。 – Yunnosch

+0

コンテンツの最大幅はここに列として入力できます – Rockshell

+0

あなたのコードを投稿するのを忘れました。 StackOverflowは、人々がコードを修正する手助けをしています。無料のコーディングサービスではありません。どのコードもコードなしより優れています。たとえあなたがそれを書く方法を知らなくても、プログラムがうまくいくと思っていることをメタコードが示してくれます。これまでの作業を[MCVE](http://stackoverflow.com/help/mcve)に見せて、あなたが期待していた結果と得られた結果を見てみましょう。 – ghoti

答えて

5
$ sed 's/,/,|,/g' file | column -t -s, 
name  | score card | ID 
Jack  | Available | YES 
Jen  | NA   | NO 
Jerry  | Available | YES 
Padula | NA   | YES 
Mackenzi | NA   | NO 
+2

これは列の数に依存しないので、これは本当にきれいです。 – codeforester

+0

こんにちはモートン、出力は、私はシェルのコマンドラインで探しているようだが、私はこの出力をメールするとき、カラム幅はまったく同じではありません。メールで同じフォーマットを取得するにはどうすればよいですか? – Rockshell

+3

メールに一定の幅のフォントを使用しますか?それはシェルやあなたの質問とは関係がありません。手作業で表形式のファイルを作成し、郵送してみてください。それをデバッグしてください。今、この出力に対して同じことをしてください。 –

0

あなたがawk

awk -F"," '{printf "%-10s%s%-10s%s%-10s\n", $1,OFS,$2,OFS,$3}' OFS="|" file.txt 
関連する問題