【发布时间】:2022-10-23 16:16:48
【问题描述】:
这是我在 csv 文件中的数据
"Day","Person","Start","End","Elapsed"
"2022-10-12","121 ","08:03","18:04","10h, 01m, 06s"
"2022-10-12","sajjad ","15:38","22:59","07h, 21m, 22s"
"2022-10-13","121 ","08:06","18:25","10h, 19m, 09s"
"2022-10-13","sajjad ","08:37","16:02","07h, 24m, 51s"
"2022-10-13","128 ","08:27","17:33","09h, 06m, 34s"
"2022-10-13","140 ","09:02","09:03","00h, 01m, 08s"
"2022-10-17","114 ","08:12","14:58","06h, 46m, 37s"
"2022-10-17","sajjad ","14:08","23:57","09h, 48m, 40s"
"2022-10-17","128 ","08:30","12:23","03h, 53m, 34s"
"2022-10-17","133 ","08:17","08:19","00h, 02m, 30s"
我想用工作时间计算提取包含人“sajjad”字的整行,我想要的输出是这样的:
"Day","Person","Start","End","Elapsed","employee working hours minutes secs"
"2022-10-12","sajjad ","15:38","22:59","07h, 21m, 22s"
"2022-10-13","sajjad ","08:37","16:02","07h, 24m, 51s"
"2022-10-17","sajjad ","14:08","23:57","09h, 48m, 40s","24hrs 34 mints 33"
我用了这个脚本
$log = get-content "C:\Users\NOC-Notebook\Desktop\export.csv"
foreach ($line in $log) {
if (($line -like '*sajjad*') )
{
$line | out-file -FilePath "C:\Users\NOC-Notebook\Desktop\export1.txt" -Append
}
}
但没有得到适当的结果,从这段代码中只得到单列中的人 sajjad 行而不计算,任何帮助将不胜感激。
【问题讨论】:
-
首先使用
Import-Csv而不是 Get-Content,这样您就可以拥有具有可用于计算的属性的自定义对象。但是为什么不使用电子表格来完成这项工作呢? -
@KeithMiller 感谢您的回复,我是编码新手,我不知道如何使用自定义对象属性进行计算。你能分享一个例子吗?我会非常感谢你
-
@Olaf 我看到了您的个人资料,您是 powershell 专家,您能分享您的意见吗?我想计算小时分钟和秒
-
您共享的示例数据似乎是无效的 CSV 数据。没有分隔符,每个数据行之间有一个空行。请您分享没有任何格式化为代码的格式的原始格式吗?
-
@Olaf 现在请我的 csv 数据,因为我在我的问题中更新了相同的输出
标签: powershell