我想搜索法国协会登记册针对中国组织。由于我无法在办公室电脑上安装任何东西,因此我根据本论坛的另一篇帖子构建了以下 MS powershell 搜索查询:
$file = "import.csv"
$csv = Get-Content $file
$csv | Select-String 'chinois' | Out-File "output.csv"
不幸的是,我得到的输出中有换行符,而这些换行符不应该有。有人能指出更好的方法吗?理想情况下,它还应包括一次搜索多个字符串的选项,并结合逻辑或。作为第一次使用 powershell 的用户,我非常感谢任何评论或想法!
答案1
- 将 csv 作为文本处理不会保留标题,请通过复制第一行手动执行。
- 要将搜索模式排除为较长单词的一部分,请将其括在 \b 中
- RegEx 中的“或”用竖线表示
|
## Q:\Test\2018\05\03\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
上述 $InFile 中的 962 行示例输出中的第 2 行
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
答案2
不要Get-Content
考虑使用Import-CSV
和Where-Object
以便读取和过滤文件。之后你可以使用Export-CSV
导出文件。
它可能看起来与此类似:
$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
您可以使用Get-Help
和简写-?
来获取有关 PowerShell CLI 的帮助。例如,您可以运行Export-Csv -?
来显示 的帮助Export-Csv
。