WindowsでもUNIXのhead,tailをPowerShellで実現してテキストを自在に扱おう

linuxなどUNIX系OSでは大きなサイズのテキストデータを自在に行数を指定して取り出すことが可能です。

headコマンドでは先頭からの行数を指定してテキストを取り出したり、

tailコマンドでは末尾からの行数を指定してテキストを取り出したり出来ます。

また、先頭から指定した行をスキップして取り出すことも可能なので組み合わせれば自在に欲しい部分のテキストを取り出しが可能です。

Windowsではどうでしょう?

標準のコマンドでは用意されていませんがPowerShellを使用することでUNIX系OS同様に取り出すことが可能です。

PowerShellの起動は「スタート」ー「Windows PowerShell」ー「Windows PowerShell」で起動します。

では紹介していきましょう。

目次

1.今回使用するコマンドレット

指定した行数のテキストを取り出すには以下のpowerShellコマンドレットを組み合わせて実行します。

Get-Content 指定したファイル(オブジェクト)を読み込みます。
Select-Object 読み込んだファイル(オブジェクト)を指定したプロパティで取り出す。

-first・・・先頭から指定した行数取り出す。

-last・・・末尾から指定した行数取り出す。

-skip・・・先頭から指定した行数飛ばして取り出す

今回はSelect-Objectがポイントです。

動作を説明するためのテキストファイルとしてフォルダ「C:\temp」に「number.csv」を用意しました。

こちらで以下説明します。

スポンサードサーチ

2.先頭から指定した行数のテキストを取り出す

テキストファイルから先頭より指定した行数を取り出すには以下のコマンドレットを実行します。

Get-Content テキストファイル|Select-Object -first 行数

【例】C:\temp\number.csvから先頭6行を取り出します。

スポンサードサーチ

3.末尾までの指定した行数のテキストを取り出す

テキストファイルから末尾までの指定した行数を取り出すには以下のコマンドレットを実行します。

Get-Content テキストファイル|Select-Object -last 行数

【例】C:\temp\number.csvから最終8行を取り出します。

 

4.途中の指定した行数のテキストを取り出す

テキストファイルの途中から指定した行数を取り出すには以下のコマンドレットを組み合わせて実行します。(skipで行をスキップしてその後firstで取り出す行数を指定します)

Get-Content テキストファイル|Select-Object -skip 行数|Select-Object -first 行数

【例】C:\temp\number.csvから21行目から5行を取り出します。

スポンサードサーチ

5.おわりに

いかがでしたか、UNIX系のように簡単に1コマンドで、とはいきませんがちょっとした工夫で同様の事が実現できます。

スクリプト化してバッチファイルを作ればもっと利便性はあがると思います。

是非挑戦してみてください。



PowerShell

Posted by garnet