powershell - 使用Powershell删除csv文件中日期超过一天的行
问题描述
菜鸟问题。我有一个具有以下格式的 csv 文件
2019-04-18 08:29:47,ACE001P,QL.IN.XCENTER.ERECEIPT.FACADE,2
日期和时间戳可以追溯到将近一个月。现在我只想要最后一天的数据,即 1 天前的数据。我正在使用下面的代码,但它没有给我任何输出。
$Data = Import-CSV "E:\Chayan\QL.IN.XCENTER.ERECEIPT.FACADE_ACE001P_1.csv"
$CutoffDate = (Get-Date).AddDays(-30)
$Data | Where-Object {$_.Date -as [datetime] -lt $CutoffDate} | Out-File .\QL.IN.XCENTER.ERECEIPT.FACADE_ACE001P_2.csv
我知道我在做一些非常愚蠢的事情。只需要一种方法来完成这项工作。
解决方案
为了Import-Csv
有效地使用,您需要数据中的标题。我使用了-Header
开关并添加了包含Date
. 随意改变这些。如果您的文件已经有标题,则可以完全省略它。
$Data = Import-CSV "E:\Chayan\QL.IN.XCENTER.ERECEIPT.FACADE_ACE001P_1.csv" -Header "Date","Col2","Col3","Col4"
$CutoffDate = (Get-Date).AddDays(-30)
$Data | Where-Object {$_.Date -as [datetime] -gt $CutoffDate} |
Export-Csv -Path ".\QL.IN.XCENTER.ERECEIPT.FACADE_ACE001P_2.csv" -NoTypeInformation
我切换-lt
到是-gt
因为您给出了日期范围的低端。这意味着您需要找到一个大于该日期的日期,即今天大于昨天。
.AddDays(-30)
即使帖子说您想要一天前的数据,我还是作为您的约会开始者离开了。如果您真的想要在最后一天内获得数据,则.AddDays(-1)
应该将其更改为。.AddHours(-24)
推荐阅读
- java - 如何将 Oracle 的间隔数据类型格式化为 HH:MM 格式?
- sql-server - SQL Server 2012如何使用自连接过滤同一张表中的记录
- c# - Windows 事件查看器在 XML 模式下为其属性提供神秘的字符串值
- c# - 已 ping 到 MySQL 服务器,但无法通过 C# 代码连接
- amazon-web-services - 使用 lambda_async 从 Aurora RDS 触发器访问 AWS Lambda?
- typescript - 如何创建一个接口是另一个接口的特化?
- typescript - 具有历史功能的类型脚本随机化器
- c++ - 为什么我的窗口函数没有消除谐波?
- javascript - 带有 ReactJS 的 Highcharts 3D 圆柱体
- c++ - 带有 getter/setter 的 memset 和 struct