PowerShellでファイルを一行ずつ読む
PowerShellでファイルを一行ずつ読みたいと思っています。具体的には、ファイルをループして、ループ内の変数に各行を格納し、その行に対して何らかの処理を行いたいと考えています。
Bashでも同じことができます。
while read line do
if [[ $line =~ $regex ]]; then
# work here
fi
done < file.txt
PowerShellのループに関するドキュメントはあまりありません。
80
3
PowerShellのループに関するドキュメントは豊富にありますが、以下のヘルプトピックをチェックしてみるといいでしょう。about_For`, about_ForEach`, about_Do`,
about_While
.あなたの問題に対するもう一つの慣用的なPowerShellの解決策は、テキストファイルの行を
ForEach-Object
コマンドレットにパイプすることです。ループ内での正規表現マッチングの代わりに、行を
Where-Object
に通すことで、興味のあるものだけをフィルタリングすることができます'。Get-Content
はパフォーマンスが悪く、ファイルを一度にメモリに読み込もうとします。C# (.NET)のファイルリーダは、一行ずつ読みます。
最高のパフォーマンス。
またはそれ以下の性能
foreach
文は、
ForEach-Object`よりもわずかに速くなる可能性があります(詳細は以下のコメントを参照してください)。ここでは全能のスイッチが活躍します。
出力します。