【问题标题】:PowerShell how to Split a text file based into multiple based on a change in value in a stringPowerShell如何根据字符串中值的变化将文本文件拆分为多个
【发布时间】:2019-04-28 11:45:01
【问题描述】:

我是 Powershell 的新手,我需要有关可以使用 PowerShell 非常快速地给出结果(执行)的要求的帮助。

我有一个文本文件,其中包含大约 500000 条记录和大约 100 个分隔 (|) 字段的数据。第一个字段包含 YYYYMMDD 格式的日期。每次该值发生变化时,我都需要拆分大文件。例如,如果文件有大约 100 个不同的日期,则应将文件拆分为 100 个文件。

我提供了一组样本数据以供参考,其中只有 3 个字段。 test1.txt 中的文件名。生成的文件应命名为 test1_00001.txt、test1_00002.txt、......、test1_00100.txt。

假设输入文件 test.txt 包含以下记录:

20190227|00001|VALUE1  
20190227|00001|VALUE1  
20190227|00001|VALUE2  
20190227|00002|VALUE3  
20190228|00005|VALUE3  
20190228|00001|VALUE2  
20190228|00002|VALUE1  
20190301|00001|VALUE1  
20190301|00300|VALUE7  
20190301|00004|VALUE7  
20190301|00004|VALUE1  
20190301|00002|VALUE5  

结果文件 test_00001.txt 应包含以下记录:

20190227|00001|VALUE1  
20190227|00001|VALUE1  
20190227|00001|VALUE2  
20190227|00002|VALUE3  

结果文件 test_00002.txt 应包含以下记录:

20190228|00005|VALUE3  
20190228|00001|VALUE2  
20190228|00002|VALUE1  

结果文件 test_00002.txt 应包含以下记录:

20190301|00001|VALUE1  
20190301|00300|VALUE7  
20190301|00004|VALUE7  
20190301|00004|VALUE1  
20190301|00002|VALUE5  

【问题讨论】:

标签: powershell file text split key-value


【解决方案1】:

为什么不使用日期作为新文件名的一部分?

Get-Content .\test1.txt | %{Add-Content -path "test$($_.split('|')[0]).txt" -Value $_}

您可以尝试使用Get-Content -ReadCount 参数来加快速度。

【讨论】:

  • IMO vonPryz 对重复问题的回答有可能大大加快速度
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-04
相关资源
最近更新 更多