Filtre o CSV grande usando o MS powershell

0

Eu quero pesquisar o registro de associações na França para organizações chinesas. Como não consigo instalar nada no computador do escritório, criei a seguinte consulta de pesquisa do MS powershell com base em outra postagem deste fórum:

$file = "import.csv"
$csv = Get-Content $file
$csv | Select-String 'chinois' | Out-File "output.csv"

Infelizmente, a saída que recebo tem quebras de linha onde não deveria haver nenhuma. Alguém pode apontar uma maneira melhor de fazer isso? Idealmente, também incluiria a opção de pesquisar várias strings de uma só vez, combinadas com uma OR lógica. Sendo um usuário iniciante de powershell, agradeço muito qualquer comentário ou ideia!

    
por dufei 03.05.2018 / 11:50

2 respostas

0
  • O manuseio do csv como texto não preservará o cabeçalho, faça-o manualmente copiando a primeira linha.
  • Para excluir o padrão de pesquisa como parte de uma palavra mais longa, coloque-o em \ b
  • O ou em um RegEx é denotado por uma barra vertical |
## Q:\Test18\SU_1319374.ps1
$InFile = ".\rna_import_20180403.csv"
$OutFile = ".\output.csv"
$pattern = "\bchinois\b|\bassociation\b"  # to exclude chinoise etc.

Get-Content $InFile | Select -First 1 >$OutFile
Get-Content $InFile | Select-String $Pattern | Add-Content $OutFile

Exemplo de saída 2 de 962 linhas acima de $ InFile

id;id_ex;siret;gestion;date_creat;date_publi;nature;groupement;titre;objet;objet_social1;objet_social2;adr1;adr2;adr3;adrs_codepostal;libcom;adrs_codeinsee;dir_civilite;telephone;siteweb;email;observation;position;rup_mi;maj_time
751P00052945;00052945;"";751P;1979-11-06;0001-01-01;D;S;CENTRE DE DOCUMENTATION SUR LE CINEMA CHINOIS;développer toutes les activités tendant a faire connaître le cinemachinois en france;006025;000000;"";71        RUE Galande;"";75005;PARIS;75105;PM;"";"";"";W751052945;R;"";2014-10-06 10:29:39
751P00185382;00185382;"";751P;2008-02-21;2008-03-15;D;S;AFAI ASSOCIATION FRANCAISE DES ARTISTES INTENATIONAUX;promouvoir la culture chinoise a paris et les échanges culturels avec les artistes chinois et internationaux;006000;000000;"";4         RUE Georges berger;"";75017;PARIS;75117;PM;"";"";"";"";A;"";2009-05-25 05:00:00
    
por 03.05.2018 / 13:50
1

Em vez de usar Get-Content , considere usar Import-CSV e Where-Object para ler e filtrar o arquivo. Posteriormente, você pode usar Export-CSV para exportar o arquivo.

Provavelmente será semelhante a isso:

$inputCsv = Import-Csv -Delimiter ';' -Path "file.csv"
$inputCsv = $inputCsv | Where-Object {$_.Attribute -eq 'x' -or $_.Attribute -eq 'y'}
Export-Csv -Path 'output.csv' -InputObject $inputCsv

Você pode usar Get-Help e a abreviação -? para obter ajuda na CLI do PowerShell. Por exemplo, você pode executar Export-Csv -? para mostrar a ajuda de Export-Csv .

    
por 03.05.2018 / 13:21