テキスト処理と内容をExcelシートに書き出す

テキスト処理と内容をExcelシートに書き出す

複数の項目を含むテキストファイルを処理しようとしていますが、名前、ID、サイズ、およびPage 83 IDを含むテキストのデータフィールドに興味があります。

Command: show PhysicalDisk name='IBM (721)'
Status: Success
Time: 2017-06-30 15:50:50,051 EST
Data:
  Name = IBM (721)
  Id = 0004fb0000180000d27ba1c974a69157
  Size (GiB) = 15.0
  Shareable = No
  Page83 ID = 360050768018385ace800000000000d6a
  Thin Provision = Yes
  VolumeGroup = Generic_SAN_Volume_Group @ Unmanaged FibreChannel Storage Array  [FibreChannel Volume Group]
  San Server = Unmanaged FibreChannel Storage Array  [Unmanaged FibreChannel Storage Array]
Command: show PhysicalDisk name='IBM (722)'
Status: Success
Time: 2017-06-30 15:50:53,636 EST
Data:
  Name = IBM (730)
  Id = 0004fb0000180000627770ff185759b6
  Size (GiB) = 100.0
  Shareable = No
  Page83 ID = 360050768018385ace800000000000d6b
  Thin Provision = Yes
  VolumeGroup = Generic_SAN_Volume_Group @ Unmanaged FibreChannel Storage Array  [FibreChannel Volume Group]
  San Server = Unmanaged FibreChannel Storage Array  [Unmanaged FibreChannel Storage Array]

このテキストを処理して、Excelワークシートの行と列に入れたいと思います。

ここに画像の説明を入力してください。

これは2つのデータフィールドの出力例です。また、「N」データフィールドでこれをどのように使用できるか疑問に思います。

ベストアンサー1

単純なカンマ区切りのcsvExcelインポートでは、次のものを使用できます。

sed -n '/Name = /!d
  N;N;N;N
  y/\n/,/
  s/, *Shareable = [^,]*//
  s/[^,=]*= //g;p' yourfile

最初の行は、Name =この行を除くすべての行を削除します。これを続行し、バッファに次の4行を追加するだけですN。このyコマンドは、行間の改行をコンマで区切って置き換えます。最初のsコマンドは行を削除しShareable、2番目のコマンドはまでの部分を削除し、=値のみを残します。行数に関係なく動作します。この場合、引用符のないテキストフィールドは自動的に認識されます。

おすすめ記事