テキストファイルを結合するPowerShell

2021年12月25日土曜日

PowerShell

t f B! P L

enter image description here

PowerShell で複数のテキストファイルを結合するサンプルコードを紹介します。

数ファイル程度であれば、手作業で結合するのも手間ではありませんが、大量にファイルがあり、とても人間系で出来る量のファイル数じゃない時にスクリプトを使って結合すると便利です。

スポンサーリンク

準備

まず、結合するファイルを準備します。

今回は次の2つの CSV を用意します。

#1つ目のファイル(data1.csv)
$str1 = "1,Yamada,TOKYO`n2,Suzuki,TOKYO"
$str1 | Out-File -FilePath .\data1.csv

#2つ目のファイル(data2.csv)
$str2 = "3,Ito,OSAKA`n4,Hayashi,OSAKA"
$str2 | Out-File -FilePath .\data2.csv

内容を確認

PS C:\temp> cat data1.csv
1,Yamada,TOKYO
2,Suzuki,TOKYO

PS C:\temp> cat data2.csv
3,Ito,OSAKA
4,Hayashi,OSAKA

ファイルの結合

それでは、上で作成した2つのファイルを結合する。

PowerShell でファイルを結合する方法はいくつかあるが、今回は Get-ContentSet-Content を使用してファイルを結合する。

Get-Content data1.csv, data2.csv | Set-Content all.csv

結合したファイルの中身を確認してみよう。

PS C:\temp> cat all.csv
1,Yamada,TOKYO
2,Suzuki,TOKYO
3,Ito,OSAKA
4,Hayashi,OSAKA

うん、いい感じに結合されていますね。

スポンサーリンク

フォルダ内のファイルを結合

ファイル指定ではなく、フォルダ内にあるテキストファイルをすべて結合するような場合は、Get-ChildItem コマンドで対象フォルダ内にあるファイルを検索して、見つかったファイルを結合する。

#指定したフォルダのCSVファイルを検索する
$c = Get-ChildItem c:\temp -File -Recurse -Include *.csv
#見つかったCSVファイルを結合する
Get-Content $c | Set-Content all.csv

※この時、ファイルの結合順はファイル名の順になるので注意すべし

まとめ

PowerShell でファイルを結合する方法を解説してきました。

こういった小技は、知っていると作業効率アップに繋がりますね!

スポンサーリンク
スポンサーリンク

このブログを検索

Profile

自分の写真
Webアプリエンジニア。 日々新しい技術を追い求めてブログでアウトプットしています。
プロフィール画像は、猫村ゆゆこ様に書いてもらいました。

QooQ