【发布时间】:2014-10-16 07:52:45
【问题描述】:
我正在尝试从一个 CSV 文件导入数据,对导入的数据进行一些计算,然后将其保存到一个新的 CSV 文件中,过去一天我一无所获。
总结:
我有一个带有数据列的管道分隔 CSV:
colA、colB、colC、colD、colE
colA 是字符串格式“20/01/2011 14:20:00”的日期时间 (dd/MM/yyyy HHmmss)
colC 是一个数字
我需要读取初始 CSV,然后从 colA 中的值,进行两个计算: 1 - 自 2000 年 1 月 1 日以来的天数和 2 - 从午夜开始的分钟数。
data.csv 中的示例数据:
01/01/2011 14:20:00|10|6|10|192.168.11.7|
01/01/2011 14:25:00|2|0|10|192.168.11.7|
01/01/2011 14:30:00|4|8|10|192.168.11.7|
01/01/2011 14:35:00|6|9|10|192.168.11.7|
然后我需要将计算的数据输出到一个新的 CSV 文件,该文件还添加了一些硬编码值/列(原始 dta,无标题):
(自 2000 年 1 月 1 日起的天数),(距午夜的分钟数),5,(colC 值),1,Text,A,0
** 括号中的值是从原始 CSV 计算/传递的。所有其他值都被硬编码到每个 CSV ROW 中。
所以对于上面的示例数据,新的输出将是(我再次为格式化目的添加了额外的换行符):
4018,860,5,6,1,Text,A,0
4018,865,5,0,1,Text,A,0
4018,870,5,8,1,Text,A,0
4018,875,5,9,1,Text,A,0
我可以将字段解析为这样的数组:
$data = Import-Csv c:\data.csv -Header colA, colB, colC, colD, colE -Delimiter '|' | Select-Object colA, colC
$newdata += $data
$newdata | convertto-csv -NoTypeInformation -Delimiter ',' | foreach-object {$_} | Out-File c:\newfile.csv
这将为我提供我所追求的两个字段,但我无法执行计算并在新的 CSV 中添加所需的额外硬编码字段。
在过去的一天里,我一直在谷歌上搜索并尝试了很多很多不同的方法,但我仍然一无所获。
任何人都可以提供一些帮助吗?谢谢。
【问题讨论】:
-
请为输入和所需输出添加一些示例数据。
-
示例数据添加到上面的主体。请原谅强制换行以保留格式。
-
我为你修好了@gizmomelb。现在我可以用你的数据来试试我的答案
标签: powershell csv