(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Como filtrar e exportar dados de um CSV em PowerShell

João Barros 05 de July de 2026 4 min de leitura

Receber um ficheiro CSV com centenas ou milhares de linhas e precisar apenas de uma parte dos dados é uma tarefa diária em qualquer equipa de dados. Com o PowerShell consegues filtrar e exportar um CSV em poucos segundos, de forma repetível e sem abrir o Excel. Este guia mostra, passo a passo, como ler um ficheiro CSV, aplicar filtros às linhas e gravar apenas os dados que interessam num novo ficheiro.

Pré-requisitos

  • Windows PowerShell 5.1 ou PowerShell 7 (ambos servem; para verificar, corre $PSVersionTable.PSVersion).
  • Um ficheiro CSV com cabeçalho na primeira linha. Vamos usar um exemplo chamado vendas.csv.
  • Conhecimentos básicos de linha de comandos (abrir um terminal e navegar entre pastas).

Para acompanhar o exemplo, cria um ficheiro vendas.csv com este conteúdo:

Data,Produto,Regiao,Quantidade
2026-01-04,Teclado,Norte,12
2026-01-05,Rato,Sul,4
2026-01-06,Monitor,Norte,25
2026-01-07,Teclado,Centro,8
2026-01-08,Monitor,Norte,3

Passo 1: Ler o CSV com Import-Csv

O primeiro passo para filtrar e exportar um CSV em PowerShell é carregá-lo para memória. O cmdlet Import-Csv lê o ficheiro e transforma cada linha num objeto, usando o cabeçalho como nomes das colunas.

$dados = Import-Csv -Path ".\vendas.csv"
$dados | Format-Table

Se o teu ficheiro usar ponto e vírgula como separador (comum em CSV exportados em Portugal), indica-o com o parâmetro -Delimiter:

$dados = Import-Csv -Path ".\vendas.csv" -Delimiter ";"

Passo 2: Filtrar as linhas com Where-Object

Agora vamos filtrar apenas as linhas que interessam. O Where-Object percorre cada objeto e mantém os que cumprem a condição. Neste exemplo queremos apenas as vendas da região Norte com quantidade igual ou superior a 10.

$filtrado = $dados | Where-Object {
    $_.Regiao -eq "Norte" -and [int]$_.Quantidade -ge 10
}
$filtrado | Format-Table

Repara no [int] antes de $_.Quantidade. Como o Import-Csv lê todos os valores como texto, é preciso convertê-los para número antes de comparar. Sem essa conversão, "3" seria considerado maior do que "25", porque a comparação seria feita como texto.

Podes combinar várias condições com -and (todas têm de ser verdadeiras) ou -or (basta uma ser). Assim adaptas o filtro a qualquer critério de negócio.

Passo 3: Escolher e ordenar as colunas

Antes de exportar, podes escolher que colunas manter e por que ordem apresentar os dados. O Select-Object seleciona colunas e o Sort-Object ordena os resultados, por exemplo pela quantidade de forma decrescente.

$resultado = $filtrado |
    Sort-Object { [int]$_.Quantidade } -Descending |
    Select-Object Data, Produto, Quantidade

Passo 4: Exportar para um novo CSV com Export-Csv

Por fim, gravamos o resultado num novo ficheiro. O Export-Csv faz o inverso do Import-Csv: transforma os objetos de volta em linhas de texto. Usa -NoTypeInformation para não escrever uma linha extra de metadados e -Encoding UTF8 para manter os acentos corretos.

$resultado | Export-Csv -Path ".\vendas_norte.csv" -NoTypeInformation -Encoding UTF8

Se precisares do resultado com ponto e vírgula (para abrir diretamente no Excel português), acrescenta -Delimiter ";".

Dica: guarda sempre o resultado num ficheiro novo em vez de escrever por cima do original. Assim, se o filtro estiver errado, não perdes os dados de partida.

Verificar o resultado

Para confirmar que o ficheiro ficou correto, volta a lê-lo com o PowerShell ou vê as primeiras linhas:

Import-Csv ".\vendas_norte.csv" | Format-Table
Get-Content ".\vendas_norte.csv" -TotalCount 5

Deves ver apenas as duas linhas da região Norte com quantidade igual ou superior a 10 (Monitor com 25 e Teclado com 12), ordenadas da maior para a menor quantidade. Se o número de linhas bater certo, o filtro funcionou.

Conclusão

Com apenas três cmdlets — Import-Csv, Where-Object e Export-Csv — automatizaste uma tarefa que, feita à mão no Excel, demoraria muito mais e seria difícil de repetir. O próximo passo é guardar estes comandos num ficheiro .ps1 para os reutilizares sempre que receberes um novo ficheiro. Que outro filtro seria útil no teu dia a dia: por data, por produto, ou por um valor mínimo de vendas?