ラージビッグバナー(970x90)

Windows

【Powershell】CSVファイルに列・カラムを追加する方法

投稿日:

ビッグバナー(piglog)728px

定例的なテキスト整形やデータ集計なんかは、コマンド操作でやっつけてしまいたいですよね。今回は、Powershell で CSVファイルに列(カラム)を追加する方法を紹介します。

PowershellでCSVに列・カラムを追加する

まずは、編集前の元データを確認します。以下は、単純にcatで表示させた状態。

このデータに対して、2列目(B列)を追加したいという状況です。

以下のスクリプトで実現可能です。

主なポイントとしては、以下の3点かと。

  • データをCSVとして読み込む際に、ヘッダを付与する
  • 各カラムをForeach-Objectで行ごとに変数に格納していく
  • 列の追加は追加したいカラムの行末に「,(カンマ)」を追加する(行末をカンマに置換)
  • CSVに出力する際は、Export-csv でなく、out-file で出力する

今回は「B列を追加する」という要件でしたので、A列の行末にカンマを付与しました。追加する箇所によって、カンマを付与する列を調整してください。カンマを付与したら、再度、ファイルにエクスポートすることで、結果的に列・カラムが増える、という仕様です。

以下が実行後のデータをcatで表示したものです。2列目が追加されていますね。

 

追加した列・カラムにデータを追加する

↑で列・カラムを追加しましたが、B列にはデータがない空っぽの状態です。この列にデータを追加していきます。

まずは、ファイルの内容の確認です。(↑のファイル名を after.csv → before.csv に変更しました。)

では、このデータの2列目に、今回は例として 時刻 を追加していきます。

以下のスクリプトで実行します。

主なポイントとしては、

  • CSVを読み込む際に付与するヘッダは、1列追加したことから、1列分増やすこと(A~D → A~E )
  • 変数に格納する際もA~Eまでとする(1列増やす)※エクスポートする際も同じ

基本的には、Foreach-Object で行ごとに処理をしていくことは、先程のスクリプトと同じです。スクリプト内のコメントの「B列に日時を追加する」の箇所に、追加したいデータを算出する処理を入れればOKです。sleep をいれているのは、行ごとに時刻が違ったほうがわかりやすいかと思っただけなので深い意味はないです。

そして、以下が実行後のデータをcatで表示したものです。

 

まとめ

いかがでしたでしょうか。

少し力技な感じも否めませんが、これで Powershell で CSV に列の追加ができるようになります。例えば、Linuxでは、awk で同じようなことができますね。awkでのやり方は以下のページで紹介しています。

では。

awk コマンド の使い方

awk や sed を使ってテキスト整形するときにいつも使い方を忘れるので、メモします。このエントリはawkです。 awk コマンド の使い方 記載内容は独断と偏見で偏ってます。さらに場合によっては、 ...

続きを見る

レクタングル (大)

レクタングル (大)

リンクユニット(レスポンシブ)

-Windows
-,

Copyright© ぴぐろぐ , 2020 All Rights Reserved.