AWK コマンドをまねたものを PowerShell で実装。

AWK コマンドをまねたものを PowerShell で実装。
入力ファイル(Input.txt)
一行目だ。
二行目で~す。
.PS1 を実行
.\AWK.ps1 Input.txt Output.txt
出力ファイル(Output.txt)
開始 ----------
1 / 2 line: 5: 一行目だ。
2 / 2 line: 7: 二行目で~す。
終了 ----------
AWK.ps1
# InputFile
#  入力ファイル
# OutputFile
#  出力ファイル
Param( [IO.FileInfo] $InputFile, [IO.FileInfo] $OutputFile )
#
# エラーが発生した場合に処理が続行しないようにする
#
Trap
{
Break
}
#
# 引数を確認する
#
$bPrepareDone = $True
if( $InputFile -eq $Null )
{
"入力ファイルを指定して下さい"
$bPrepareDone = $False
}
if( $OutputFile -eq $Null )
{
"出力ファイルを指定して下さい"
$bPrepareDone = $False
}
if( $bPrepareDone -eq $False )
{
return
}
#
# メイン処理
#
# テキストファイルを読み取る
# $lines は、各行を要素とする配列変数です
$lines = Get-Content $InputFile
$linesOutput = $lines | &`
{
# 最初の行を処理する前の処理
Begin
{
$lineIndex = 0
"開始 ----------"
}
# 全ての行を処理した後の処理
End
{
"終了 ----------"
}
# 各行を処理する
# ここでパターンマッチングを行う事で grep と同じことができる
Process
{
$lineCurrent = $lines[$lineIndex]
$lineIndex ++
"{0} / {1} line: {2}: {3}" -f $lineIndex, $lines.Length, $lineCurrent.Length, $lineCurrent
}
}
# CP932(Shift-JIS) で出力するためのコード
# このコードを省くと UTF-16 で出力される
$linesOutput | Out-File $OutputFile default