行を列に変換

行を列に変換

ハイパーバイザーで実行されている仮想マシンの詳細を含むファイルがあります。いくつかのコマンドを実行し、出力をファイルにリダイレクトします。データは次の形式にすることができます。

Virtual Machine : OL6U5
        ID     : 0004fb00000600003da8ce6948c441bb
        Status : Running
        Memory : 65536
        Uptime : 17835 Minutes
        Server : MyOVS1.vmorld.com
        Pool   : HA-POOL
        HA Mode: false
        VCPU   : 16
        Type   : Xen PVM
        OS     : Oracle Linux 6
Virtual Machine : OL6U6
        ID     : 0004fb00000600003da8ce6948c441bc
        Status : Running
        Memory : 65536
        Uptime : 17565 Minutes
        Server : MyOVS2.vmorld.com
        Pool   : NON-HA-POOL
        HA Mode: false
        VCPU   : 16
        Type   : Xen PVM
        OS     : Oracle Linux 6
Virtual Machine : OL6U7
        ID     : 0004fb00000600003da8ce6948c441bd
        Status : Running
        Memory : 65536
        Uptime : 17835 Minutes
        Server : MyOVS1.vmorld.com
        Pool   : HA-POOL
        HA Mode: false
        VCPU   : 16
        Type   : Xen PVM
        OS     : Oracle Linux 6

50を超えるVMを実行している一部のハイパーバイザーでは、この出力はハイパーバイザーによって異なります。上記のファイルは3つのVMのみを実行するハイパーバイザーの例にすぎないため、リダイレクトされたファイルには複数の(N台のVM)に関する情報が含まれると予想されます。

awk/sed またはシェルスクリプトを使用して、次の形式でこの詳細をインポートする必要があります。

Virtual_Machine  ID                                Status   Memory  Uptime  Server              Pool        HA     VCPU  Type     OS
OL6U5            0004fb00000600003da8ce6948c441bb  Running  65536   17835   MyOVS1.vmworld.com  HA-POOL     false  16    Xen PVM  Oracle Linux 6
OL6U6            0004fb00000600003da8ce6948c441bc  Running  65536   17565   MyOVS2.vmworld.com  NON-HA-POOL     false  16    Xen PVM  Oracle Linux 6
OL6U5            0004fb00000600003da8ce6948c441bd  Running  65536   17835   MyOVS1.vmworld.com  HA-POOL     false  16    Xen PVM  Oracle Linux 6

ベストアンサー1

お持ちの場合rs(再発明)ユーティリティ可能であれば、次のことができます。

rs -Tzc: < input.txt

これは、ダイナミック列幅まで、質問で指定されたものとまったく同じ出力形式を提供します。

  • -T入力データの転置
  • -z各列の最大値に基づいて列サイズを適切に調整します。
  • -c:入力フィールド区切り記号としてコロンを使用する

これはすべてのサイズのテーブルに適用されます。たとえば、次のようになります。

$ echo "Name:Alice:Bob:Carol
Age:12:34:56
Eyecolour:Brown:Black:Blue" | rs -Tzc: 
Name   Age  Eyecolour
Alice  12   Brown
Bob    34   Black
Carol  56   Blue
$ 

rsOS X(およびその他のBSDシステム)でデフォルトで有効になっています。次のコマンドを使用してUbuntu(およびdebianシリーズ)にインストールできます。

sudo apt-get install rs

おすすめ記事