bash出力をbashテーブルに変換する方法

bash出力をbashテーブルに変換する方法

Bashでプログラムを実行した後の出力は次のようになります(2行、:limiter、4つのデータ列)。

#003:BMW:11:36

#004:Audi:2:35

こんなbashテーブルに変換したい

数字 ID コスト
#003 BMW 11 36
#004 アウディ 2 35

これを達成するためにsed / awkを使用できますか?私のデータはファイルにありません。

ベストアンサー1

データ型を次のように指定するとします。

| Number | Car  | ID | Cost |
| ------ | ---- | -- | ---- |
| #003   | BMW  | 11 |   36 |
| #004   | Audi |  2 |   35 |

コマンドはcsvlook以下から来ます。csvkitタイトルを最初に入力すると自動的に完了します。

ファイルを編集したり(またはデータジェネレータコマンドでヘッダーをエクスポートしたり)、先頭に行を追加してNumber:Car:ID:Costヘッダーを挿入したり、即座にヘッダー行を提供したりできます。

$ { echo Number:Car:ID:Cost; cat file; } | csvlook
| Number | Car  | ID | Cost |
| ------ | ---- | -- | ---- |
| #003   | BMW  | 11 |   36 |
| #004   | Audi |  2 |   35 |

上記csvlookのコマンドは、データがCSV文書であることを検出し、:フィールド区切り文字として使用し(明示的に指定することもできます-d :)、書式付きテーブルを生成します。

cat fileデータを出力として生成する任意のコマンドに置き換えることができます。

最終出力csvlookは有効なMarkdownコードであり、このウェブサイトでは次のようにレンダリングされます。

数字 ID コスト
#003 BMW 11 36
#004 アウディ 2 35

:入力をCSVとして処理すると、引用符付きのフィールドをサポートできます。

$ cat file
#003:BMW:11:36
#004:Audi:2:35
#005:Saab:99:"1:50"
$ { echo Number:Car:ID:Cost; cat file; } | csvlook
| Number | Car  | ID | Cost |
| ------ | ---- | -- | ---- |
| #003   | BMW  | 11 | 36   |
| #004   | Audi |  2 | 35   |
| #005   | Saab | 99 | 1:50 |

おすすめ記事