【发布时间】:2020-05-29 11:35:09
【问题描述】:
我有大约 2500 个 CSV 文件,每个文件大小约为 20MB。我正在尝试从每个文件中过滤掉某些行并将其保存到一个新文件中。
所以,如果我有:
File 1 :
Row1
Row2
Row3
File 2 :
Row2
Row3
and so on..
如果我过滤所有文件并选择“Row2”作为过滤文本,则新文件夹应该包含所有文件,其中只有与过滤文本匹配的行。
浏览一些论坛,我想出了以下可能有助于我过滤行的方法,但我不确定如何递归地执行此操作,而且我也不知道这是否是一种足够快的方法。任何帮助表示赞赏。
Get-Content "C:\Path to file" | Where{$_ -match "Rowfiltertext*"} | Out-File "Path to Out file"
我使用的是 Windows,所以我猜 Powershell 类型的解决方案在这里是最好的。
要过滤的文本将始终位于第一列。
谢谢 悉达特
【问题讨论】:
-
如何选择要删除的行?搜索模式可以是行中的任何内容,还是应该是特定列中的值?
-
Select-Stringcmdlet 和switch结构都可以加载文件...并快速完成。两者都可以处理正则表达式模式。我会尝试其中一个... [grin] -
@Theo :要过滤的文本将始终位于第一列。也使用此信息更新了问题。
-
还有一些问题:[1]所有 csv 文件都有完全相同的标题/字段吗? [2]输出文件也应该是带有标题的csv还是只是一个文本文件而不关心字段和字段顺序?
标签: powershell csv