Ler arquivo linha por linha no PowerShell
Eu quero ler um arquivo linha por linha no PowerShell. Especificamente, eu quero fazer um loop pelo arquivo, armazenar cada linha em uma variável do loop e fazer algum processamento na linha.
Eu sei o equivalente ao Bash:
while read line do
if [[ $line =~ $regex ]]; then
# work here
fi
done < file.txt
Não há muita documentação sobre os loops PowerShell.
80
3
A documentação sobre loops no PowerShell é abundante, e você pode querer verificar os seguintes tópicos de ajuda:
sobre_For
,sobre_ForEach
,sobre_Do
,sobre_Equando
.Outra solução idiomática PowerShell para o seu problema é canalizar as linhas do arquivo de texto para a ForEach-Object` cmdlet:
Ao invés de regexar a correspondência dentro do loop, você poderia canalizar as linhas através de Where-Object` para filtrar apenas aquelas em que você'está interessado:
O
Get-Content
tem má performance; ele tenta ler o arquivo na memória de uma só vez.O leitor de ficheiros C# (.NET) lê cada linha uma a uma
**Melhor desempenho***
Ou um pouco menos performante
A declaração "para cada" será provavelmente um pouco mais rápida do que "Para cada objeto" (veja os comentários abaixo para mais informações).
O interruptor todo-poderoso funciona bem aqui:
Saída: