gpt4 book ai didi

powershell - 导入Csv,更改1个字段,然后导出

转载 作者:行者123 更新时间:2023-12-03 00:27:24 24 4
gpt4 key购买 nike

我有以下格式的数据(制表符分隔):

Id      Dates                        Number
5 01-01-18<space><tab> 19
5 01-01-18 02-03-18 19
5 01-01-18 02-03-18 03-02-18 19
37 07-09-18 19
37 07-09-18 07-15-18 19
37 07-09-18 07-15-18 07-28-18 18.1
41 03-15-18 19
41 03-15-18 04-15-18 19
41 03-15-18 04-15-18 05-15-18 36.5

第二个字段 Dates实际上是一个带有尾随空格的数组(以空格分隔)。

在将第二个字段修改为仅包括最后日期之后,我需要将其导入到PowerShell中并导出到新的CSV文件。
Id      Dates      Number5       01-01-18   195       02-03-18   195       03-02-18   1937      07-09-18   1937      07-15-18   1937      07-28-18   18.141      03-15-18   1941      04-15-18   1941      05-15-18   36.5

I haven't been able to get anything but errors after iterating through records (so I have no semi-working code to post along with this).

The CSV file can contain as many as 100,000 records.


So I've got this so far:

$ImportDir = "input_dir"
$ExportDir = "output_dir"

# We only want the files generated yesterday
$Date = (Get-Date).AddDays(-1).ToString('yyyyMMdd')

Add-Content ($ExportDir + "blahblah_" + $Date + ".txt") "Id`tDate`tValue"

Get-ChildItem $ImportDir -Filter *_blahblah_$Date.txt | ForEach-Object {
$File = [System.IO.File]::ReadAllText((Resolve-Path $_.FullName))

foreach ($RecordSet In $File) {
$RecordSet.TrimEnd() -Replace "(\d+?)`t.*(\d\d-\d\d-\d\d) `t(\d+?.\d+?) `t", "`$1`t`$2`t`$3" |
#Select-Object -Skip 1 |
Add-Content ($ExportDir + "blahblah_" + $Date + ".txt")
}
}

我之所以改用 [System.IO.File],是因为它比 -ReadCount更快,而且 -ReadCount以某种方式丢失了记录。最后,我需要弄清楚这是如何跳过每个文件的第一行(基本上,我正在许多文件上执行此正则表达式,并且需要删除标题)。似乎我所做的任何事情都会导致脚本无法正常工作。

最佳答案

如果要将数据视为纯文本,并且CSV确实按照指定的格式设置(没有引号或其他内容),则可以在每行执行regex替换以获取所需的数据,并且它应该相对快。我可以一次处理1000条记录,但是您可以尝试使用-ReadCount号查看是否可以提高性能。较高的数字会使用更多的内存,但应该使其运行更快。

ForEach($RecordSet in (Get-Content C:\Path\To\File.csv -ReadCount 1000)){
$RecordSet -replace "(\S+?)`t.*(\d\d-\d\d-\d\d) `t(.*)$","`$1`t`$2`t`$3" | Add-Content C:\Path\To\NewFile.csv
}

关于powershell - 导入Csv,更改1个字段,然后导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53491112/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com