2016-11-02 5 views
0

httpリクエストのおかげでデータを受け取り、2つの列に分かれた情報を出力するスクリプトを作成しようとしています。たとえば :bashスクリプトでの表記

abcde   | 123 
fghijkl   | 4567 
mnopqrstuvwxyz   | foo 

あなたも私が期待どおりに動作しない集計で、見ることができるように...

誰もがこれを解決するためのアイデアを持っていますか?事前による

おかげで、

答えて

2

あなたはこれを使用することができます:任意のソースからcolumnにパイプ

cat file | column -t -s' ' 

abcde   | 123 
fghijkl   | 4567 
mnopqrstuvwxyz | foo 

例は、問題のあなたの正確な出力を含むファイルであるが、あなたはできます。

  • -s区切り文字(文字のセットが可能)を指定します。
  • -t入力に含まれる列の数を決定し、表を作成します。列は空白で区切られ、デフォルトでは-sオプションで指定された文字で区切られます。美しい印刷用のディスプレイに便利です。

「doesnt」にセパレータ(この場合は「|」)を入力すると、次のように目的のセパレータを挿入できます。 "|" と単一のスペースを置き換える上記sed IMで

cat file | sed 's//| /' | column -t -s' ' 

sed最初のスペースに一致すると、デフォルトでラインで一つだけの空間と一致しています。

+1

彼はまた、 "-o '|' " – Aaron

+0

入力Arronのおかげで、答えを編集しました。セパレータを追加する方が良い場合は、回答を改善するために共有してください。 –

+0

私はあなたがそこに 'sed'を必要としないと思っています。私は、OPが出力にパイプを表示したかったことを心に留めました。その場合、 '-o'が入力にあるかどうかを指定する必要があります(セパレータは出力セパレータで置き換えられます。デフォルトは2つのスペースです)。入力は区切り文字を含んでいなければなりません(しかし、それは単一の空白かもしれません;別のもので置き換える必要はありません) – Aaron