【问题标题】:Quick way to read a tab-delimited file and sort by date column using PowerShell使用 PowerShell 读取制表符分隔文件和按日期列排序的快速方法
【发布时间】:2010-08-13 01:53:12
【问题描述】:

读取制表符分隔文件并仅处理几列的最佳/最快方法是什么?

示例:

Name\tAddress\tCit\t\State\Zip\Date of Move

我希望在接下来的 30 天内只获取 column1 和 colum6 (姓名、搬家日期和按计划在未来 30 天内搬家的日期排序...)。

我玩过Get-Content | Where-Object 并没有运气......

更新

我能够将选项卡式文件转换为CSV

获得 CSV 文件后,我已执行以下操作以仅获取我需要的列。

PS D:> 导入-csv .\test.csv |选择“名称”、“移动日期”、“地址” |排序对象“MoveDate”

这将返回我只需要的列,但不按日期排序...日期字段按字符串排序。

2010 年 1 月 12 日 2010 年 1 月 13 日

我需要将它排序为日期时间字段...

我的示例数据在该字段中看起来像这样...

 9/30/2009 12:21

如何让它按实际日期排序?

最好只返回从今天起 + 30 天的日期。

【问题讨论】:

  • 看看基思的评论。那么你就有了一个完整的解决方案。

标签: powershell


【解决方案1】:

ConvertFrom-Csv 有一个 -Delimiter 参数。您应该能够指定选项卡。它返回对象,因此您可以将其通过管道传递给“sort Date”。

选项卡由“`t”指定。所以试试这个:

ConvertFrom-Csv  .\test.csv -Delimiter "`t" | Sort-Object MoveDate

【讨论】:

  • 迈克,亲爱的,我 90% 在那里。它不按日期排序...日期字段按字符串排序。 2010 年 1 月 12 日 2010 年 1 月 13 日我需要将其排序为日期时间字段....我的示例数据在该字段中看起来像这样... 2009 年 9 月 30 日 12:21 任何让它排序的想法实际日期 ? (不是字符串,其中 1 是第一个 2 第二个等。)最好只返回今天 + 30 天的日期。
  • 给排序对象一个提示,例如... | Sort {[DateTime]$_.MoveDate} 一旦 Sort 知道它是在排序日期而不是字符串,它会做得更好。
  • 太棒了。我从来没有在 sort 中使用过那种东西。我喜欢学习新的 PowerShell 好东西。
  • 最后一部分... | where-object {[datetime]$_.MoveDate -lt (get-date).AddDays(30)}
猜你喜欢
  • 2012-01-19
  • 2016-06-02
  • 2014-06-13
  • 2018-05-24
  • 2013-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多