powershell - PowerShell如何根据字符串中值的变化将文本文件拆分为多个
问题描述
我是 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
解决方案
为什么不使用日期作为新文件名的一部分?
Get-Content .\test1.txt | %{Add-Content -path "test$($_.split('|')[0]).txt" -Value $_}
您可以尝试使用Get-Content
-ReadCount 参数来加快速度。
推荐阅读
- excel - 来自多列和多行的参考值
- amazon-web-services - Kubernetes Bridge VSCODE 未连接到 AWS EKS 中的依赖项
- identityserver4 - 身份服务器 4 错误 400 并将我重定向到 signin-oidc
- c++ - 如何编写一个引用“char *”或“const char*”的 C++ 函数?
- python - 高效序列化多个需要进行 REST 调用的对象
- android-jetpack-compose - LazyColumn 中的列堆叠/折叠成一列
- reactjs - 映射放大 Storage.get()
- linux - 删除可变长度字符串的一部分并将其存储在新变量中
- html - 包装和高度增加输入 React CSS
- spring - Spring Cloud Gateway 从身份验证中添加标头